HAML:form_tag困境(缩进?)

Ale*_*der 20 haml ruby-on-rails

我正在制作"用户设置表单",并坚持使用HAML:

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

这导致"语法错误,意外的kENSURE,期待$ end".

工作变体是

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

结果是

 <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>
Run Code Online (Sandbox Code Playgroud)

错误:控制外部表格标签,3次提交按钮.

任何有关修复的想法都将受到赞赏.谢谢!

nir*_*rum 36

您应该将块传递给form_tag.我想你想要:

Rails 2.x:

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

Rails 3+:

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

  • 这个答案对我不起作用.你应该使用=所以表格实际上会打印出`= form_tag('/')do` (8认同)
  • 我相信这是Rails 3(?)的变化.答案是3岁以上,早于Rails 3. (4认同)