2010-08-14 33 views
19

Tôi đang làm "hình thức thiết lập người dùng", và mắc kẹt với HAML (thụt đầu dòng?):HAML: tiến thoái lưỡng nan form_tag

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

Điều này dẫn đến "lỗi cú pháp, bất ngờ kENSURE, mong $ kết thúc".

Các biến thể lao động là

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

Kết quả trong

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

sai: điều khiển bên ngoài thẻ hình thức, 3 lần nút gửi.

Mọi ý tưởng về sửa lỗi sẽ được đánh giá cao. Cảm ơn bạn!

+0

Hãy chỉnh sửa cho phù hợp hiển thị biến thể làm việc. – Reactormonk

Trả lời

35

Bạn phải chuyển một khối tới form_tag. Tôi nghĩ rằng bạn muốn:

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

câu trả lời này sẽ không làm việc cho tôi. Bạn nên sử dụng = do đó, hình thức sẽ được in ra thực tế '= form_tag ('/') do' – Sutulustus

+4

Tôi tin rằng đó là một sự thay đổi trong Rails 3 (?). Câu trả lời là hơn 3 tuổi và trước Rails 3. – nirvdrum

Các vấn đề liên quan