【问题标题】:How do you access a parameter when creating a post创建帖子时如何访问参数
【发布时间】:2011-07-28 08:59:51
【问题描述】:

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

帮助!为什么这不起作用??

:编辑:

Post.rb(帖子模型)

 attr_accessor :agree
 attr_accessible :agree

PostController(在定义创建中)

@post.title = "AGREED!!" if params[:post][:agree] == "1"

【问题讨论】:

    标签: ruby-on-rails checkbox boolean helper


    【解决方案1】:

    在 Ruby 中,数字 0 和字符串 "0" 在布尔上下文中都不会计算为 false。试试if (params[:post][:agree]=="1")

    【讨论】:

    • 假设您在谈论数据库列类型,那么布尔值更好。这样你的模型就会像你期望的那样工作; IIRC Rails 应该在初始化模型时转换参数。
    • 也许您应该在问题中包含更多代码,我很难想象它的样子。您能否提供模型和控制器的相关部分(以及数据库迁移/模式的相关部分)?
    【解决方案2】:

    Rails,默认情况下会同时创建一个复选框(带有value="1")和一个隐藏的输入元素(带有value="0"),所以你总是会得到一个传递回服务器的值,我个人认为这很愚蠢并覆盖它.尝试检查 params[:post][:agree].blank? 是否改为。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-01
      • 2021-10-16
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多