Collection_Select不为我的模型赋值

时间:2013-03-02 13:58:15

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2

这是Can't Mass Assign Protected Attributes Error

的后续问题

我正在尝试使用Colleciton_Select,以便我可以从下拉框中选择一个TeacherType,而不是允许用户在teacherType_id中写入。

<%= collection_select(:teacherType, :teacherType_id, TeacherType.order('title'), :id, :title, :prompt => true) %>

但是,当我从下拉菜单中选择一个选项时,它总是说教师已成功更新,但教师模型中没有任何变化。

我做错了吗?

1 个答案:

答案 0 :(得分:1)

首先,我认为您正在尝试将teacherType添加到Teacher而不是TeacherType,因此您应该使用

<%= collection_select(:teacher, :teacherType_id, TeacherType.order('title'), :id, :title, :prompt => true) %>

现在,第二点我想提一下,如果你在一个模型中有has_many个关联,那么你应该总是在另一个模型中有belongs_to个关联。

所以修改Teacher模型中的关联定义

 has_one :teacherType

 belongs_to :teacherType

另一点是,将关联名称作为关联模型的强调复数形式的良好实践。 Convention over configuration is the way rails applications are supposed to be built.如果在任何情况下您都不能拥有此名称,则必须为关联定义指定class_name属性。