2010-08-14 19 views
19

estoy haciendo "forma la configuración del usuario", y pegado con HAML (sangría?):HAML: dilema form_tag

= form_tag('/') 
    - [1,2,3].each do |i| 
    = check_box_tag "accept#{i}" 
    = submit_tag 

Esto se traduce en "error de sintaxis, inesperada kENSURE, esperando $ terminar".

La variante de trabajo es

= form_tag('/') 
    - [1,2,3].each do |i| 
    = check_box_tag "accept#{i}" 
    = submit_tag 

Resultados en

<input id="accept1" name="accept1" type="checkbox" value="1" /> 
    <input name="commit" type="submit" value="Save changes" /> 
    <input id="accept2" name="accept2" type="checkbox" value="1" /> 
    <input name="commit" type="submit" value="Save changes" /> 
    <input id="accept3" name="accept3" type="checkbox" value="1" /> 
    <input name="commit" type="submit" value="Save changes" /> 
    <form action="/" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="tuniieYp9hgvGBMaYDjK2l3Mgjpxo9F1LPzqEF4ykHg=" /></div> 

incorrecto: controles fuera de etiqueta de formulario, 3 veces botón Enviar.

Cualquier idea sobre la fijación sería apreciada. ¡Gracias!

+0

favor editar para una correcta visualización variante de trabajo. – Reactormonk

Respuesta

35

Debe pasar un bloque a form_tag. Creo que desee:

rieles 2.x:

- form_tag('/') do 
    - [1, 2, 3].each do |i| 
    = check_box_tag "accept#{i}" 
    = submit_tag 

rieles de + 3:

= form_tag('/') do 
    - [1, 2, 3].each do |i| 
    = check_box_tag "accept#{i}" 
    = submit_tag 
+8

esta respuesta no funcionará para mí. Deberías usar = para que el formulario se imprima realmente '= form_tag ('/') do' – Sutulustus

+4

Creo que fue un cambio en Rails 3 (?). La respuesta tiene más de 3 años y es anterior a Rails 3. – nirvdrum