0

これは、保護された属性を一括割り当てできないエラーへのフォローアップの質問です。

Colleciton_Selectを使用して、ユーザーがteacherType_idに書き込むことを許可する代わりに、ドロップダウンボックスからTeacherTypeを選択できるようにしようとしています。

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

ただし、ドロップダウンメニューからオプションを選択すると、Teacherが正常に更新されたと常に表示されますが、Teacherモデルでは何も変更されません。

私は何か間違ったことをしていますか?

4

1 に答える 1

1

まず、ではなくにを追加しようとしているのでteacherType、を使用する必要がありますTeacherTeacherType

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

ここで、2つ目のポイントとしてhas_many、一方のモデルに関連付けがある場合は、常にもう一方のモデルにもbelongs_to関連付けを行う必要があります。

Teacherしたがって、モデルの関連付け定義をから変更します。

 has_one :teacherType

 belongs_to :teacherType

もう1つのポイントは、関連付けられたモデルの複数形を強調したものとして関連付け名を付けることをお勧めします。Convention over configuration is the way rails applications are supposed to be built.いずれにせよ、この名前を使用できない場合はclass_name、関連付け定義に属性を指定する必要があります。

于 2013-03-02T14:18:51.753 に答える