【问题标题】:Rails access serialized array in formRails 以形式访问序列化数组
【发布时间】:2013-12-22 20:11:21
【问题描述】:

我有以下课程:

class Question < ActiveRecord::Base
  serialize :choices
end

我希望我的问题有一组用户可以选择的选项,并且我将它们存储在问题记录中以避免第二次数据库查询。我正在尝试设置我的表单,以便用户可以编辑每个选项的文本。这是我用于输入的标签:

<input name="question[choices][]" type="text" />

我的许可函数是这样的:

def question_params
  params.require(:question).permit(:category_id, :content, :choices, :answer_id)
end

我的选择数组未设置。我在这里做错了什么?

【问题讨论】:

  • 你在使用 Rails 4 吗?
  • 是的。这是通过 SO 的最小评论长度获得的虚拟句子。 =)
  • 你能分享你的强参数permit调用吗?我想这可能与stackoverflow.com/questions/16549382/… 有关
  • 添加到原始问题
  • 彼得,您的链接为我指明了正确的方向。如果你想回答这个问题,我会给你功劳。

标签: ruby-on-rails activerecord


【解决方案1】:

随着强参数的引入,任意非标量值不再被接受为输入值。但是,如果您想传递一个标量数组,您可以在 permit 语句中声明,如下所示:

params.require(:question).permit(:category_id, :content, :choices => [], :answer_id)

然而,这可能是一个难以检测的问题,因为在某些情况下可以简单地忽略输入值而不会出错(我不记得其中的细节)。

这将在how to permit an array with strong parameters 中进一步讨论

【讨论】:

    【解决方案2】:

    试试下面..(控制器代码?)

    class Question < ActiveRecord::Base
      serialize :choices,Array
    end
    

    【讨论】:

      猜你喜欢
      • 2017-06-22
      • 2017-03-07
      • 2014-05-27
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多