ActionView Ruby代码不在HAML中进行评估

时间:2013-01-30 00:30:03

标签: ruby-on-rails ruby haml actionview

我在HAML视图中有以下Rails代码:

= form_tag ..... do
  - @someArray.each do |age|
    = age
    = check_box_tag "ages[#{age}]", @keys.has_key? age ? checked : unchecked

我在这里要做的是根据age变量是否在控制器@keys的实例变量中来选中或取消选中此复选框。但是,这会引发syntax error, unexpected '\n', expecting tASSOC错误。

为什么这个Ruby代码没有评估的任何想法?它是在HAML中的=之后,这正是评估Ruby代码所需要的。我错了吗?对不起我是Rails的新手,一开始就很混乱。

谢谢!

2 个答案:

答案 0 :(得分:1)

checkedunchecked是变量;我想你想写"checked""unchecked"

此外,优先级可能存在问题:@a.b? c ? d : e评估为@a.b?(c ? d : e),而不是(@a.b?(c)) ? d : e

答案 1 :(得分:1)

在确定优先级@keys.has_key?(age)之后,您必须在check_box_tag方法中处理参数 order 。见Documentation

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

所以试试:

= check_box_tag age, age, @keys.has_key?(age) ? true : false