Difference between form_for and form_tag?

前端 未结 3 770
野的像风
野的像风 2020-12-17 18:05

I used this gem in my application, but I\'m not sure the difference between the different implementation options for the gem:

  • form_for
  • form_tag with b
3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-17 19:01

    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

    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.

提交回复
热议问题