【发布时间】:2012-07-17 02:12:36
【问题描述】:
我对 Rails 很陌生,正在构建我的第一个“真正的”应用程序并且努力了解如何使关系正常工作。
我有一个 Quiz 模型和 Icon 模型。每个测验都属于_一个图标,一个图标有_许多测验。 (将图标视为一个类别)。
在我的“新建/编辑”测验表单上,我想要一个选择框来选择正确的图标。目前我...
<%= collection_select(:quiz, :icon_id, Icon.all, :id, :title, :prompt => true) %>
在我的测验控制器中创建动作我有...
def create
@icon = Icon.find(params[:quiz][:icon_id])
@quiz = @icon.quizzes.build(params[:quiz])
if @quiz.save
flash[:success] = "New quiz created successfully!"
redirect_to @quiz
else
render 'new'
end
end
当我提交表单时,我得到一个
Can't mass-assign protected attributes: icon_id
我理解为 icon_id 的错误在模型中未指定为 attr_accessible。
我可以使其可访问,因为没有真正的安全风险,或者我可以在传递给构建方法之前从测验哈希中删除 icon_id,但这两个选项似乎都不是正确的做事方式。
这样做的正确方法是什么?
谢谢!
【问题讨论】:
-
如果您希望能够以这种方式设置它,则必须将 icon_id 添加到 attr_accessible ......这似乎是您需要能够做的。这是完全正常的。您正在为测验记录设置 icon_id 列。
-
很高兴知道这样做是正常的。谢谢!
标签: ruby-on-rails ruby-on-rails-3