77 votes

comment ajouter l'id html au form_tag de rails

J'utilise Rails 2.2.2 et je voudrais ajouter un identifiant au code du formulaire html généré par le form_tag.

<% form_tag session_path do -%>      
<% end -%>

Il produit actuellement :

<form action="/session" method="post">
</form>

Je voudrais qu'il produise :

<form id="login_form" action="/session" method="post">
</form>

El api n'est pas vraiment d'une grande aide et j'ai essayé d'ajouter diverses combinaisons de

:html => {:id => 'login_form'}

sans succès.

102voto

vladr Points 34562

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 <element>_remote_tag dont vous avez besoin pour déplacer les attributs HTML à l'intérieur d'une balise :html carte :

<% form_tag form_remote_tag :url => session_path, :html => {
                            :id => 'elm_id', :class => 'elm_class',
                            :style => 'elm_style' } do -%>
   ...
<% end -%>

28voto

Kirill Warp Points 136

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

0 votes

Vous pensez ? De plus, les réponses codées ne sont pas les meilleures. Essayez d'expliquer un peu votre réponse.

1 votes

Ce n'est pas un problème. Et, oui je pense :) Si vous voulez ajouter une classe ou une méthode ou quoi que ce soit d'autre à la balise de formulaire, vous avez juste besoin de packager votre contrôleur et votre action comme ceci {:controller => "people", :action => "search"}, alors tous vos paramètres après cette structure fonctionneront, s'ils sont pertinents.

0 votes

Cela m'a vraiment aidé. Merci @Kirill Warp

3voto

Dutow Points 2565
<% 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>

0voto

Ivica Lakatoš Points 151

Dans mon cas, j'avais besoin de mettre des options HTML en {} pour ajouter réellement id a form_tag comme ceci :

<%= form_tag(some_update_path(@some_record), { method: :put, id: "some-id" }) do <% end %>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X