【发布时间】:2014-05-23 17:57:44
【问题描述】:
基本上我使用many-to-many 与through 的关系来组合Skill 和Course 模型。所以它看起来像这样:
课程
has_many :course_skills
has_many :skills, through: :course_skills
技能
has_many :course_skills
has_many :courses, through: :course_skills
课程技能
belongs_to :skill
belongs_to :course
我希望能够为课程添加许多技能,因此视图如下所示:
<div class="field">
<%= f.label :skill, "Skills" %>
<%= f.collection_check_boxes :skill_ids, Skill.all, :id, :title %>
</div>
当我没有此设置时,只使用了 belongs_to 和 has_many 它工作,但现在我收到一条错误消息:uninitialized constant Course::CourseSkill 并指向 collection_check_boxes 所在的行是。那么我做错了什么?如果这让我的观点更清楚,我也会关注上一篇文章:How to add multiple many-to-many fields in one form with Rails 4?
【问题讨论】:
-
您的型号名称应为
CourseSkill.. 而不是CourseSkills。根据 Rails 约定has_many :course_skills,将模型名称转换为CourseSkill..查看文档The name of the other model is pluralized when declaring a has_many association.。现在反向阅读.. -
第三个模型真的叫
CourseSkills吗?应该是CourseSkill。 -
@ArupRakshit 是的,就是这样,谢谢! :)
标签: ruby-on-rails ruby forms ruby-on-rails-4 many-to-many