how to add html id to rails form_tag

HtmlRuby on-Rails

Html Problem Overview


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.

Html Solutions


Solution 1 - Html

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 -%>

Solution 2 - Html

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

Solution 3 - Html

<% 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>

Solution 4 - Html

In my case I needed to put HTML options in {} to actually add id to form_tag, like this:

<% end %>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMarkView Question on Stackoverflow
Solution 1 - HtmlvladrView Answer on Stackoverflow
Solution 2 - HtmlKirill WarpView Answer on Stackoverflow
Solution 3 - HtmlDutowView Answer on Stackoverflow
Solution 4 - HtmlIvica LakatošView Answer on Stackoverflow