J'utilise Rails 2.2.2 et je voudrais ajouter un identifiant au code de formulaire html généré par le form_tag.
<% form_tag session_path do -%>
<% end -%>
Produit actuellement:
<form action="/session" method="post">
</form>
Voudrait-il produire:
<form id="login_form" action="/session" method="post">
</form>
Le api n’est pas vraiment utile et j’ai essayé d’ajouter diverses combinaisons de
:html => {:id => 'login_form'}
sans chance.
Pour <element>_tag
, vous spécifiez directement les attributs HTML, comme suit:
<% form_tag session_path, :id => 'Elm_id', :class => 'Elm_class',
:style => 'Elm_style' do -%>
...
<% end -%>
C'est pour les constructions <element>_
remote
_tag
que vous devez déplacer les attributs HTML dans une mappe :html
:
<% form_tag form_remote_tag :url => session_path, :html => {
:id => 'Elm_id', :class => 'Elm_class',
:style => 'Elm_style' } do -%>
...
<% end -%>
Ce code
form_tag(:controller => "people", :action => "search", :method => "get", :class => "nifty_form")
donner comme résultat:
<form accept-charset="UTF-8" action="/people/search?method=get&class=nifty_form" method="post">
Mais si vous utilisez cette structure
form_tag({:controller => "people", :action => "search"}, :method => "get", :class => "nifty_form")
vous obtiendrez comme résultat
<form accept-charset="UTF-8" action="/people/search" method="get" class="nifty_form">
et c'est exactement ce que vous voulez
<% form_tag 'session_path', :id => 'asdf' do -%>
<% end -%>
Génère
<form action="session_path" id="asdf" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="ed5c62c836d9ba47bb6f74b60e70280924f49b06" /></div>
</form>
Dans mon cas, j'avais besoin de mettre les options HTML dans {}
pour ajouter réellement id
à form_tag
, comme ceci:
<%= form_tag(some_update_path(@some_record), { method: :put, id: "some-id" }) do
<% end %>