在创建一个“很多”模型对象时,我很难在一对多关系中成功分配外键。
更具体地说......我有两个模型Course
和Section
,其中课程 has_many :sections
,以及每个部分< / strong> 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
方法?谢谢!
答案 0 :(得分:0)
你所做的事情看起来基本正确。
您的create
控制器通常在开头就有这样的一行。 (你无法找到毕竟没有创造的东西。)
@course = Course.new(params[:course])
如果您知道自己只构建一个Section
,则可能需要在@course.sections.build
控制器中执行new
。然后,从那里确保您的Courses
模型accepts_nested_attributes_for :sections
,然后您可以使用Section
功能填写视图中的fields_for
字段。当您这样做时,您的控制器可以简单地说@course.save
,Section
将随之保存。
我希望有所帮助,但如果没有,那么请添加一条评论,其中包含您所看到的错误。