在创建"多"模型对象之一时,我在一对多关系中成功分配外键时遇到困难。
更具体地说……我有两个模型,Course
和Section
,其中Course has_many :sections
和每个Section belongs_to :course
。除其他属性外,每个节都具有外键course_id
。
我想写一个叫做current_course
的辅助方法,这样当我写我的create
函数时,我可以写current_course.sections.build(params[:section])
,它会在创建时自动分配外键course_id
。换句话说,current_course
将获取它被点击的类的id(即/class/1/
),并使其等于新创建部分的course_id
。我沿着@current_course ||= Course.find(params[:course_id])
的路线尝试过。但它在创建时一直抛出ID错误。我做错了什么,我如何纠正我的current_course
方法?谢谢!
你所做的看起来基本正确。
您的create
控制器通常在开头有这样一行。(你根本找不到没有被创建的东西。)
@course = Course.new(params[:course])
如果你知道你要构建一个Section
,你可能想在你的new
控制器中做@course.sections.build
。然后从那里,确保您的Courses
模型accepts_nested_attributes_for :sections
,然后您可以使用fields_for
函数填充视图中的Section
字段。当你这样做时,你的控制器可以简单地说@course.save
, Section
将与它一起保存。
我希望这对你有帮助,但如果没有,那么请添加一个注释,你看到的错误