在rails中的同一模型中具有多对多的集合选择会产生错误

时间:2013-02-19 12:16:15

标签: ruby-on-rails ruby-on-rails-3

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

我有一个包含Courses的表和一个表Prerequisites,它有两列都包含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")

来自this SO answer

如果我将先决条件放在Console中,则可以使用,如下所示:

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选择的一个选项发布后发出此错误:

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

并在参数dump:

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

我不知道那些“”是如何在params中结束的,并且无法找到另一种创建表单字段的方法。我认为我的模型设置正确。

0 个答案:

没有答案