2013-03-02 74 views
0

这是一个后续问题Can't Mass Assign Protected Attributes ErrorCollection_Select不是我的模型分配值

我试图用一个Colleciton_Select,这样我可以从下拉框中TeacherType,而不是让用户来写teacherType_id。

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

然而,当我从下拉菜单中的选项,它总是说教师已成功更新,但是没有在教师模型变化。

我做错了什么?

+0

它是形式吗? – codeit 2013-03-02 14:06:55

+1

试试这个<%= collection_select(:teacher,:teacherType_id,TeacherType.order('title'),:id,:title,:prompt => true)%> – 2013-03-02 14:07:37

+0

你能发表你的params吗? – codeit 2013-03-02 14:12:29

回答

1

第一件事,我想你想添加的teacherTypeTeacher而不是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属性指定为关联定义。

+0

因此,每当我有'has_many',我需要一个'belongs_to'?但从字面上看,在我的脑海中,有道理的说TeacherType有很多老师,而老师模型只有一个老师类型与之相关联...... 另外,我不太清楚你的答案的后半部分是什么意思,你是指我的'TeacherType'模型吗?你的意思是我应该把它叫做Teacher_Type吗? – omarArroum 2013-03-02 16:37:16

+0

不,我的意思是你应该写'belongs_to:teacher_type'。 – 2013-03-02 16:42:32

+0

其实'belongs_to'关联是在我们保留foreign/association关键字的模型中定义的。而且,属于一个群体/类型的人比拥有一个群体/类型更有意义。 – 2013-03-02 16:48:58