I used this gem in my application, but I'm not sure the difference between the different implementation options for the gem:
Can anyone clarify? I understand that form_for
is used when you wish to interact with a model, but what about the other two?
The differences are subtle, but important. form_for
is a more advanced tool that yields an object you use to generate your form elements:
<% form_for(@foo) do |form| %>
<%= form.text_field(:bar) %>
<% end %>
The form_tag
method is much more primitive and just emits a tag. If you want to put things inside of the <form>
tag that's emitted, you put things inside the block:
<% form_tag do %>
<%= text_field_tag(:bar, 'bar_value') %>
<% end %>
Note that the form_for
method handles grabbing values from your model, and will at least try to route the form to the appropriate action. With form_tag
you are responsible for everything as it makes no assumptions about what you're doing.
One uses model binding and the other doesn't
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With