我有以下course.rb
型号
has_many :chapters
has_many :lectures, through: :chapters
has_many :enrols
has_many :contents, through: :lectures
has_many :users, -> { uniq }, through: :enrols
accepts_nested_attributes_for :chapters, allow_destroy: true
accepts_nested_attributes_for :lectures, allow_destroy: true
和course.rb
有效的管理文件
form title: 'Edit Course' do |f|
f.inputs 'Details' do
f.input :course_name
f.input :course_subtitle
f.input :course_description
f.input :video_link
f.input :course_language
f.input :status
f.input :course_image
end
# has_many :contents do |content|
# content.input :description
# content.input :attachment
# end
f.has_many :chapters, allow_destroy: true do |chapter|
# chapter.input :title
chapter.has_many :lectures do |lecture|
# lecture.input :title
# lecture.has_many :contents do |content|
# content.input :description
# end
lecture.input :title
end
end
actions
end
我正在尝试在课程表单中编辑content
course
,并且它需要多个嵌套的has_many,因为它的has_many数量通过关系。
现在我得到undefined method
new_record?'为nil:NilClass`错误
怎么做?有没有更好的方法呢?
答案 0 :(得分:0)
未定义的方法new_record?'为零:NilClass`
根本原因:
chapter.has_many :lectures do |lecture|
<强>原因:强>
accepts_nested_attributes_for :lectures, allow_destroy: true
模型中有Course
,因此无法在Chapter
<强>解决方案:强>
chapter.has_many :lectures do |lecture|
应该是
f.has_many :lectures do |lecture|
如果您想在chapter
内进行嵌套讲座,请从accepts_nested_attributes_for :lectures, allow_destroy: true
模型中移除Course
,然后将其添加到Chapter
模型中。< / p>
如果我只想添加讲座怎么办?你的建议似乎有效 但它给了我添加lecutre和章节
的选项
在这种情况下,不需要f.has_many :chapters, allow_destroy: true do |chapter|
。只需f.has_many :lectures do |lecture|