我有一组由用户、书籍和章节组成的嵌套资源。这是它的外观。
楷模
class User
has_many :books, dependent: :destroy
accepts_nested_attributes_for :books, allow_destroy: true
end
class Book
belongs_to :user
has_many :chapters, dependent: :destroy
accepts_nested_attributes_for :chapters, allow_destroy: true
end
class Chapter
belongs_to :book
end
章节控制器
def create
@chapter = @book.chapters.build(params[:chapter])
if @chapter.save
flash[:success] = "A new chapter created!"
redirect_to blah blah
else
render 'new'
end
end
protected
def get_book
@book = Book.find(params[:chapter][:book_id]) ||
Book.find(params[:book_id])
end
你可能想知道为什么我有那个受保护的方法。我试图让用户在单独的页面中创建章节和书籍,并且仍然可以方便地使用嵌套资源。因此,用户可以在章节创建页面上创建章节,并通过关联表单将章节与正确的书关联起来。
目前我被卡住了,因为章节资源没有获得它需要的用户 ID。我对 Web 开发非常陌生,所以我可能会在这里做一些疯狂的事情。任何帮助将不胜感激。我真的很想让这个工作。
编辑:为了更详细地说明我所说的“章节资源没有获得它需要的用户 ID” - 在章节模型中我写了 *validates :user_id,presence:true*。当我在章节创建页面上按下提交按钮时,它会给出一个错误,提示 user_id 不能为空。