以下是我的观点:
<%= check_box_tag :age_visible, 1, checked?(:age_visible) %>
这将访问辅助方法:
def checked?(pref)
if @user.preferences.pref == "1"
true
else
false
end
end
我希望帮助者声明:
if @user.preferences.age_visible == "1"
所以它将检查数据库以查看用户之前是否已选择显示其年龄,如果是,则将选中复选框;否则,不是。现在它只是传递false,但如果我在帮助器中写出“@ user.preferences.age_visible”,它将传递true。但是,当然,我希望能够将帮助器用于其他属性。
答案 0 :(得分:1)
你不需要任何额外的助手。在数据库中创建布尔字段时,ActiveRecords提供了一种方法来查询其是否设置为true。试试这个:
<%= check_box_tag :age_visible, 1, @user.age_visible? %>
答案 1 :(得分:0)
Davidb的回答是正确的,但是对于您想要动态调用方法的未来情况,您可以使用send
。例如。像这样:
@user.preferences.send(:age_visible)
只需要一点小小的提示,让你的助手更简洁:
@user.preferences.send(pref) == "1"
已经返回一个布尔值,因此您可以像这样重写助手:
def checked?(pref)
@user.preferences.send(pref) == "1"
end