2009-03-06 6 views
67

J'utilise Rails 2.2.2 et je voudrais ajouter un id au code de formulaire html généré par le form_tag.comment ajouter html id aux rails form_tag

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

produit actuellement:

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

Voudrait à produire:

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

Le api est pas vraiment d'aide et je l'ai essayé d'ajouter diverses combinaisons de

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

sans chance.

Répondre

90

Pour <element>_tag vous spécifiez les attributs HTML directement, comme suit:

<% form_tag session_path, :id => 'elm_id', :class => 'elm_class', 
          :style => 'elm_style' do -%> 
    ... 
<% end -%> 

Il est pour <element>_remote_tag constructions que vous devez déplacer les attributs HTML dans une carte :html:

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

Cela fonctionne aussi pour: chemin form_tag,: name = « monnom » – Chris

+1

Peut-être une question stupide, mais cela peut être fait pour form_for? – Codejoy

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

Ce code

form_tag(:controller => "people", :action => "search", :method => "get", :class => "nifty_form") 

donnent 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

Vous pensez? Aussi - les réponses au code seulement ne sont pas les meilleures - essayez d'expliquer la réponse un peu. –

+1

Ce n'est pas un problème. Et, oui je pense :) Si vous voulez ajouter une classe ou une méthode ou n'importe quoi d'autre pour former une balise, vous avez juste besoin de pack votre contrôleur et action comme ceci {: controller => "people",: action => "search"}, alors tous vos paramètres après cette structure seront travail, si elles sont pertinentes –

+0

@KirillWarp beau travail. – Bnjmn

Questions connexes