这是Can't Mass Assign Protected Attributes Error
的后续问题我正在尝试使用Colleciton_Select,以便我可以从下拉框中选择一个TeacherType,而不是允许用户在teacherType_id中写入。
<%= collection_select(:teacherType, :teacherType_id, TeacherType.order('title'), :id, :title, :prompt => true) %>
但是,当我从下拉菜单中选择一个选项时,它总是说教师已成功更新,但教师模型中没有任何变化。
我做错了吗?
答案 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
属性。