1

我有一个奇怪的 Rails 数据库/表单问题。

我得到了 1 个包含 Courses 的表和 1 个表 Prerequisites,其中有 2 个列都包含 Course_ids(列称为“course_a_id”和“course_b_id”)。

在课程模型中,我有这个:

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

这个答案

如果我通过控制台输入先决条件,这将起作用,如下所示:

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

但是,此表单字段不允许我将 prereqs 放入数据库中:

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

在使用值 1 选择一个选项发布后出现此错误:

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

并在参数转储中:

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

我不知道那个“”是如何在参数中结束的,也想不出另一种方法来创建表单字段。我认为我的模型设置正确。

4

0 回答 0