0

我认为 Rails 将我的哈希文字解释为嵌套属性。我实际上只是想将哈希转换为字符串。它不是与某个模型相关的嵌套属性,也不应该与模型相关。在这里,嵌套值只是一种通过表单传递数据的便捷方式,而无需太多繁琐的工作。

:params 是

{"utf8"=>"✓",
 "authenticity_token"=>"[deleted for SO]",
 "scorecard"=>{"1"=>"2",
 "2"=>"2",
 "3"=>"2",
 "4"=>"2",
 "5"=>"2",
 "6"=>"2",
 "7"=>"2",
 "8"=>"2",
 "9"=>"2",
 "10"=>"2",
 "11"=>"2",
 "12"=>"2"}},
 "commit"=>"Create Assessment"}

..但是当我这样做时:

assessment = Assessment.new(params[:assessment])
...
@assessment.save

...我得到:

unknown attribute: scorecard

有趣的是,当

attr_accessible :scorecards

.. 在模型中(注意复数形式),我得到:

Can't mass-assign protected attributes: scorecard

因为当 attr_accessible 是我真正想要的 (:scorecard) 时,我得到“未知属性:记分卡”,看来 Rails 认为它​​正在处理嵌套属性。

我可以告诉 Rails 不要将 :scorecard 视为嵌套属性吗?

谢谢。

4

2 回答 2

1

您的意思是在 attr_accessible 中省略“s”吗?

attr_accessible :scorecard(s)

编辑

你很多人会收到下一个错误,因为你的桌子上缺少一scorecard

unknown attribute: scorecard
于 2012-12-09T06:38:49.780 回答
1

您可以发布表格的列名吗?您似乎缺少“记分卡”列。还是您将其命名为“记分卡”?以防万一。

您还必须声明 serialized :scorecard 以保存序列化值。将其保存为 JSON 也是一种选择。只需要额外的解析。

于 2012-12-09T14:25:35.020 回答