form_tag
- 1.0.0 (0)
- 1.1.6 (0)
- 1.2.6 (13)
- 2.0.3 (1)
- 2.1.0 (-1)
- 2.2.1 (-1)
- 2.3.8 (0)
- 3.0.0 (5)
- 3.0.9 (-1)
- 3.1.0 (8)
- 3.2.1 (0)
- 3.2.8 (6)
- 3.2.13 (1)
- 4.0.2 (0)
- 4.1.8 (2)
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (0)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (-37)
- 7.1.3.2 (38)
- 7.1.3.4 (0)
- What's this?
form_tag(url_for_options = {}, options = {}, &block)
public
Starts a form tag that points the action to an url configured with url_for_options just like ActionController::Base#url_for. The method for the form defaults to POST.
Options
-
:multipart - If set to true, the enctype is set to “multipart/form-data”.
-
:method - The method to use when submitting the form, usually either “get” or “post”. If “put”, “delete”, or another verb is used, a hidden input with name _method is added to simulate the verb over post.
-
:authenticity_token - Authenticity token to use in the form. Use only if you need to pass custom authenticity token string, or to not add authenticity_token field at all (by passing false). Remote forms may omit the embedded authenticity token by setting config.action_view.embed_authenticity_token_in_remote_forms = false. This is helpful when you’re fragment-caching the form. Remote forms get the authenticity from the meta tag, so embedding is unnecessary unless you support browsers without JavaScript.
-
A list of parameters to feed to the URL the form will be posted to.
-
:remote - If set to true, will allow the Unobtrusive JavaScript drivers to control the submit behavior. By default this behavior is an ajax submit.
Examples
form_tag('/posts') # => <form action="/posts" method="post"> form_tag('/posts/1', :method => :put) # => <form action="/posts/1" method="post"> ... <input name="_method" type="hidden" value="put" /> ... form_tag('/upload', :multipart => true) # => <form action="/upload" method="post" enctype="multipart/form-data"> <%= form_tag('/posts') do -%> <div><%= submit_tag 'Save' %></div> <% end -%> # => <form action="/posts" method="post"><div><input type="submit" name="commit" value="Save" /></div></form> <%= form_tag('/posts', :remote => true) %> # => <form action="/posts" method="post" data-remote="true"> form_tag('http://far.away.com/form', :authenticity_token => false) # form without authenticity token form_tag('http://far.away.com/form', :authenticity_token => "cf50faa3fe97702ca1ae") # form with custom authenticity token
form_tag with named route and html class
<% form_tag position_user_card_path(@user, card), :method => :put, :class => ‘position-form’ do %>
How to submit current url
For example to change some kind of param on select change…
<%= form_tag({}, {:method => :get}) do %> <%= select_tag :new_locale, options_for_select(I18n.available_locales, I18n.locale), :onchange => "this.form.submit();" %> <% end %>
To add an ID to the form
Found this the hard way, but to add an ID to the form generated by form_tag, you must explicitly make hashes.
Add ID
<%= form_tag({:action => 'create'}, {:id => 'anID'}) %>
Erb tags
The <% -%> is not being used since Rails 3.
The example above should be changed to:
<%= form_tag('/posts') do %> <div><%= submit_tag 'Save' %></div> <% end %>