意思是,在PostsController中,def create,我想访问列中传递的布尔值一致的值。创建帖子时,会有一个设置此值的复选框。 Checked使得同意为真(1)并且未经检查使得同意为假(0)。现在我有代码params[:post][:agree]
以便访问此值,但这似乎不起作用。
当我尝试在if语句中使用它时,语句总是出现,就好像params [:post] [:agree]总是计算为true。
帮助!为什么这不起作用?
的:编辑: 的
Post.rb(帖子模型)
attr_accessor :agree
attr_accessible :agree
PostController(在def创建中)
@post.title = "AGREED!!" if params[:post][:agree] == "1"
答案 0 :(得分:3)
在Ruby中,数字0
和字符串"0"
在布尔上下文中都不会计算为false
。试试if (params[:post][:agree]=="1")
答案 1 :(得分:1)
Rails默认创建一个复选框(带有value="1"
)和一个隐藏的输入元素(带value="0"
),所以你总是得到一个传递回服务器的值,我个人认为是愚蠢并覆盖它。请尝试检查是否params[:post][:agree].blank?
。
我不完全确定我理解你的整个问题。您只是在谈论表单数据,还是在谈论您的模型?