我認爲Rails正在將我的散列字面解釋爲嵌套屬性。我實際上只是想將散列轉換爲一個字符串。它不是與某個模型相關的嵌套屬性,也不應該與模型相關。在這裏,嵌套值僅僅是一種簡單的方式,可以在沒有太多忙碌的情況下通過表單傳遞數據。保存哈希文字(告訴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是我真正想要的(:記分卡),我得到「未知屬性:記分卡」,似乎認爲Rails的它處理一個嵌套的屬性。
我可以告訴Rails不要把:記分卡作爲嵌套屬性嗎?
謝謝。
另外,要將散列存儲爲字符串,請在您的模型中聲明'serialize:scorecard'。 – bitstrider
是的,我的意思是把它排除在外。這會導致「無法批量簽名受保護的屬性:記分卡」(沒有'')。然後,在網頁上的參數名稱中添加's'將需要attr_accessible被記錄下來,最後有兩個s。 在模型中做「序列化:記分卡」似乎沒有做到這一點(即使我期待它);我仍然得到'未知屬性:記分卡'。 – Zach
s /導致/在attr_accessible中添加's'導致 – Zach