我在视图中有这个表单
div
= label_tag "choice[has_pictures]", "Choice can have pictures?"
= check_box_tag "choice[has_pictures]", choice.has_pictures, choice.has_pictures
但是,每次我提交它时,我总是将参数has_pictures
视为false。我不知道我错过了什么,如果它是一个苗条的东西
我使用的是Rails 4.0.11
答案 0 :(得分:1)
我相信,你可以设置断点(甚至在视图中!)并检查choice.has_pictures
的值是多少。
可能是nil
或者您的方法名称可能存在错误,因为当布尔返回方法的名称以问号结尾时,大多数都会被调用:choice.has_pictures?
(对于模型'boolean field'这样的包装方法,这是一种很好的做法。
Slim没有任何问题 - 它只是将Rails'辅助方法check_box_tag
调用的结果放到输出中。
然而,还有一个来自Rails docs的提示:您对value
方法使用了错误的check_box_tag
属性:
check_box_tag(name, value = "1", checked = false, options = {})
如果您的模型没有图片(has_pictures == false
),则相应的参数将在选中复选框后返回false
,而nil
则不会。{/ p>
检查出来:
<input value="false" name="option_name" />
如果选中,则params["option_name"] == false
。如果不是,params["option_name"] == nil
。
所以,我建议你以更方便的方式使用它:
= check_box_tag "choice[has_pictures]", true, choice.has_pictures