2009-03-06 38 views
67

Estoy utilizando Rails 2.2.2 y me gustaría agregar una identificación al código de formulario html generado por form_tag.cómo agregar html id a rails form_tag

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

produce Actualmente:

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

gustaría que producen:

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

El api no es realmente ningún tipo de ayuda y he intentado añadir varias combinaciones de

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

sin suerte.

Respuesta

90

Para <element>_tag especifica atributos HTML directamente, de la siguiente manera:

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

Es por <element>_remote_tag construcciones que usted necesita para mover los atributos de HTML dentro de un mapa :html:

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

Esto también funciona para: ruta form_tag,: name = 'myname' – Chris

+1

pregunta estúpida, pero posiblemente se puede hacer esto para form_for? – Codejoy

3
<% form_tag 'session_path', :id => 'asdf' do -%>  
<% end -%> 

Genera

<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

Este código

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

dar como resultado:

<form accept-charset="UTF-8" action="/people/search?method=get&class=nifty_form" method="post"> 

Pero, si se utiliza esta estructura

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

obtendrá como resultado

<form accept-charset="UTF-8" action="/people/search" method="get" class="nifty_form"> 

y es exactamente lo que quiere

+0

¿Crees? Además, las respuestas con solo el código no son las mejores, trate de explicar la respuesta un poco. –

+1

Eso no es problema. Y, sí, creo :) Si quieres agregar clase o método o cualquier otra cosa para formar la etiqueta, solo necesitas empaquetar tu controlador y una acción como esta {: controller => "people",: action => "search"}, entonces todos los parámetros después de esta estructura funcionarán, si son relevantes –

+0

@KirillWarp buen trabajo. – Bnjmn

Cuestiones relacionadas