What is the difference between form_for and form_tag? Is anything different for form_remote_for and form_remote_tag?
You use form_for with a model and form_tag for custom URLs. Both generate HTML for a form . There are only a few minor differences so Rails 5.1 combined the two. You should now be using form_with .
Which statement correctly describes a difference between the form helper methods form_tag and form_for ? The form_tag method is for basic forms, while the form_for method is for multipart forms that include file uploads.
You would use form_for for a specific model,
<% form_for @person do |f| %> # you can use f here First name: <%= f.text_field :first_name %> Last name : <%= f.text_field :last_name %> <% end %>
Form_tag create basic form,
<%= form_tag '/person' do -%> <%= text_field_tag "person", "first_name" %> <% end -%>
form_for
prefers, as its first arg, an activerecord object; it allows to easily make a create or edit form (to use it in a "new" view you should create an empty instance in controller, like:
def new @foo = Foo.new end
It also passes a form variable to the block, so that you don't have to repeat the model name within the form itself. it's the preferred way to write a model related form.
form_tag
just creates a form tag (and of course silently prepare an antiforgery hidden field, like form_for
); it's best used for non-model forms (I actually only use it for simple search forms or the like).
Similarly, form_remote_for
and form_remote_tag
are suited for model related forms and not model related forms respectively but, instead of ending in a standard http method (GET, POST...), they call an ajax method.
All this and far more are available for you to enjoy in the FormHelper and PrototypeHelper reference pages.
EDIT 2012-07-13
Prototype
has been removed from rails
long ago, and remote forms have completely changed. Please refer to the first link, with reguard to the :remote
option of both form_for
and form_tag
.
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