HAML: 表单标签困境(缩进?)

20

我正在制作“用户设置表单”,但在HAML中卡住了:

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

这导致了"语法错误,意外的kENSURE,期望$end"。

可行的变体是

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

错误:控件在表单标签外部,有三个提交按钮。

欢迎提出任何修复的想法。谢谢!


请编辑以正确显示变体。 - Reactormonk
1个回答

36
你应该向form_tag传递一个块。我认为你想要的是:
Rails 2.x:
- form_tag('/') do
  - [1, 2, 3].each do |i|
    = check_box_tag "accept#{i}"
  = submit_tag

Rails 3+:


Rails 3或更高版本:
= form_tag('/') do
  - [1, 2, 3].each do |i|
    = check_box_tag "accept#{i}"
  = submit_tag

8
这个答案对我没用。你应该使用等号,这样表单才会被正确地输出:= form_tag('/') do - Sutulustus
4
我相信这是在Rails 3中的一个改变。这个答案已经超过3年了,早于Rails 3。 - nirvdrum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接