如何使用check_box_tag检查Haml中的复选框

时间:2012-10-18 14:44:50

标签: html ruby checkbox haml

有人可以告诉我如何设置这些复选框进行检查吗?我确定它很简单,但经过一个小时的尝试后我觉得我需要问一下!谢谢!

= form_tag movies_path, :id => 'ratings_form', :method => :get do
  Include: 
  - @all_ratings.each do |rating|
    = rating
    = check_box_tag "ratings[#{rating}]", 
  = submit_tag 'Refresh', :id => 'ratings_submit'

6 个答案:

答案 0 :(得分:15)

参考check_box_tag

check_box_tag "ratings[#{rating}]",  1, !!(rating.rating)

您的2nd parameter必须是value复选框

您的3rd parameter必须是boolean condition,返回true/false并依赖于此checked/unchecked

答案 1 :(得分:3)

check_box_tag "ratings[#{rating}]",  1, @selected.include?("#{rating}")

其中@selected是一个选中了元素的数组。

答案 2 :(得分:2)

对于Checked使用true,对于行末

使用Unchecked为false
check_box_tag "ratings[#{rating}]", true #checked

check_box_tag "ratings[#{rating}]", false #unchecked

答案 3 :(得分:2)

根据api dock,复选框标记采用以下选项:

check_box_tag(name, value = "1", checked = false, options = {})

这意味着第一个值是名称,第二个值是'value',第三个值是是否选中该框,默认为false。因此,要检查或取消选中该框,您可以执行以下操作:

- if (some condition)
  = check_box_tag "ratings[#{rating}]", "anystring", true
- else 
  = check_box_tag "ratings[#{rating}]" 

第二行只是将一个随机字符串放入值字段,因为在这种情况下它并不重要。

答案 4 :(得分:0)

以Sali的答案为基础。奇怪的是,check_box_tag会返回一个没有标签文本的复选框。如果您在数组上进行迭代,可以使用以下方法显示文本。

- Puppies.each do |puppy|
  = check_box_tag(puppy.name, puppy.name, puppy.goodboy?)
  = puppy.name

答案 5 :(得分:-3)

= check_box_tag "ratings[#{rating}]",{},{:checked => ""}