Ruby on rails 创建帖子时如何访问参数

Ruby on rails 创建帖子时如何访问参数,ruby-on-rails,checkbox,boolean,helper,Ruby On Rails,Checkbox,Boolean,Helper,这意味着,在PostsController的def create中,我希望访问在列中传递的布尔值agree的值。创建帖子时,会有一个复选框设置此值。选中表示同意为真(1),未选中表示同意为假(0)。现在我有代码params[:post][:agree]来访问这个值,但这似乎不起作用。 当我尝试在if语句中使用它时,该语句总是出现,就好像params[:post][:agree]的计算结果总是为true一样 救命啊!为什么这不管用 :编辑: Post.rb(Post模型) 后置控制器(在def创建

这意味着,在PostsController的def create中,我希望访问在列中传递的布尔值agree的值。创建帖子时,会有一个复选框设置此值。选中表示同意为真(1),未选中表示同意为假(0)。现在我有代码
params[:post][:agree]
来访问这个值,但这似乎不起作用。 当我尝试在if语句中使用它时,该语句总是出现,就好像params[:post][:agree]的计算结果总是为true一样

救命啊!为什么这不管用

:编辑:

Post.rb(Post模型)

后置控制器(在def创建中)


默认情况下,Rails会创建一个复选框(带有
value=“1”
)和一个隐藏的输入元素(带有
value=“0”
),因此您总是会将一个值传递回服务器,我个人认为这很愚蠢,并会覆盖它。尝试检查
params[:post][:agree]。是否为空?


不过,我不能完全确定我是否理解你的整个问题。您是在谈论表单数据,还是在谈论您的模型?

在Ruby中,在布尔上下文中,数字
0
或字符串
“0”
的计算结果都不是
false
。如果(params[:post][:agree]=“1”)

假设您讨论的是数据库列类型,那么布尔值更好。这样,您的模型将按照您的预期工作;IIRC Rails应该在您初始化模型时转换参数。也许您应该在问题中包含更多的代码,我很难想象它是什么样子。您能否提供模型和控制器的相关部分(可能还包括数据库迁移/模式的相关部分)?
 attr_accessor :agree
 attr_accessible :agree
@post.title = "AGREED!!" if params[:post][:agree] == "1"