我在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的新手,一开始就很混乱。
谢谢!
答案 0 :(得分:1)
checked
和unchecked
是变量;我想你想写"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