【问题标题】:Uninitialized constant Rails 4未初始化的常量Rails 4
【发布时间】:2014-05-23 17:57:44
【问题描述】:

基本上我使用many-to-manythrough 的关系来组合SkillCourse 模型。所以它看起来像这样:

课程

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_tohas_many 它工作,但现在我收到一条错误消息:uninitialized constant Course::CourseSkill 并指向 collection_check_boxes 所在的行是。那么我做错了什么?如果这让我的观点更清楚,我也会关注上一篇文章:How to add multiple many-to-many fields in one form with Rails 4?

【问题讨论】:

标签: ruby-on-rails ruby forms ruby-on-rails-4 many-to-many


【解决方案1】:

正如 OP 在评论中同意的那样,根据我在 comment 中的建议,我将其纳入答案 -

您的型号名称应为CourseSkill,而不是CourseSkills。根据 Rails 约定has_many :course_skills,将模型名称转换为CourseSkill..查看文档The name of the other model is pluralized when declaring a has_many association.。现在倒过来读..

【讨论】:

  • 我现在还有一个问题 - 它没有将任何内容保存到 course_skills 数据库表中,您知道这是为什么吗?
  • @Xeen 不保存的原因有很多,一个是validations,有时原因可能是hooks..看看这部分,无法跟踪它。如果您遇到任何错误,请进行回溯并找出它..
猜你喜欢
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多