Reputation: 17152
I am using Rails 2.2.2 and I would like to add an id to the html form code generated by the form_tag.
<% form_tag session_path do -%>
<% end -%>
Currently produces:
<form action="/session" method="post">
</form>
Would like it to produce:
<form id="login_form" action="/session" method="post">
</form>
The api isn't really any help and I've tried adding various combinations of
:html => {:id => 'login_form'}
with no luck.
Upvotes: 77
Views: 77676
Reputation: 311
In my case I needed to put HTML options in {}
to actually add id
to form_tag
, like this:
<%= form_tag(some_update_path(@some_record), { method: :put, id: "some-id" }) do
<% end %>
Upvotes: 0
Reputation: 412
This code
form_tag(:controller => "people", :action => "search", :method => "get", :class => "nifty_form")
give as result:
<form accept-charset="UTF-8" action="/people/search?method=get&class=nifty_form" method="post">
But, if you use this structure
form_tag({:controller => "people", :action => "search"}, :method => "get", :class => "nifty_form")
you will get as result
<form accept-charset="UTF-8" action="/people/search" method="get" class="nifty_form">
and it's exactly what you want
Upvotes: 28
Reputation: 66681
For <element>_tag
you specify HTML attributes directly, as follows:
<% form_tag session_path, :id => 'elm_id', :class => 'elm_class',
:style => 'elm_style' do -%>
...
<% end -%>
It is for <element>_
remote
_tag
constructs that you need to move the HTML attributes inside a :html
map:
<% form_tag form_remote_tag :url => session_path, :html => {
:id => 'elm_id', :class => 'elm_class',
:style => 'elm_style' } do -%>
...
<% end -%>
Upvotes: 104
Reputation: 5668
<% form_tag 'session_path', :id => 'asdf' do -%>
<% end -%>
Generates
<form action="session_path" id="asdf" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="ed5c62c836d9ba47bb6f74b60e70280924f49b06" /></div>
</form>
Upvotes: 3