2010-08-14 43 views
19

我在做 “用户设置表”,并坚持与HAML(缩进):HAML:的form_tag困境

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

这将导致 “语法错误,意想不到的kENSURE,期待$结束”。

工作变体是

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

结果

<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> 

错:控制形式标签外,3次提交按钮。

任何想法修复将不胜感激。谢谢!

+0

请编辑正常工作变型显示器。 – Reactormonk 2010-08-14 14:17:08

回答

35

您应该将一个块传递给form_tag。我想你想:

Rails的2.X:

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

的Rails 3+:

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

这个回答不会对我有用。你应该使用=所以表单将被实际打印出来= = form_tag('/')do' – Sutulustus 2013-10-03 11:07:18

+4

我相信这是Rails 3(?)的变化。答案已经超过3岁,并且早于Rails 3。 – nirvdrum 2013-12-23 19:32:19