1

Rails データベース/フォームに奇妙な問題があります。

Courses を含む 1 つのテーブルと、Course_id を保持する 2 つの列を持つ 1 つの Prerequisites テーブルを取得しました (列は「course_a_id」および「course_b_id」と呼ばれます)。

Course モデルには次のものがあります。

:has_and_belongs_to_many(:prerequisites,
:join_table => "prerequisites",
:foreign_key => "course_a_id",
:association_foreign_key => "course_b_id",
:class_name => "Course")

このSOの回答から

これは、コンソールで前提条件を次のように設定すると機能します。

Course.find(3).prerequisites = [Course.find(1), Course.find(2)]

ただし、このフォーム フィールドでは、DB に前提条件を設定できません。

<%= f.label :prerequisite, "Prerequisites" %>
<%= f.collection_select(:prerequisites, Course.all, :id, :name,
    {:multiple => true}, :multiple => "multiple") %>

値 1 で 1 つのオプションを選択して投稿した後、このエラーが発生します。

"Course(#-631146998) expected, got String(#77208170)" 

およびパラメーターダンプで:

"prerequisites"=>["",
"1"]}

その "" がどのように params に入ったのかわかりませんし、フォーム フィールドを作成する別の方法がわかりません。私のモデルは正しく設定されていると思います。

4

0 に答える 0