Rails将资源创建嵌套在不同的页面上

resources :books do 
    resources :chapters
end

假设我有上述正确嵌套的资源。 我想创建一个页面,在其中创建父书资源,并创建章节资源。 创建章节时,我希望用户能够选择他们创建的父书。

现在我有...

protected
def find_book
    @book = Book.find(params[:book_id])
end

...在章节控制器中,但我相信这只适用于URL中已存在书签ID的情况。 因此,为了创建一个新章节,我希望能够在单独的页面上创建章节时,必须访问“rootpath / book / book_id / chapter / new”。

虽然我真的不知道如何解决这个问题,但现在我的计划是在链接嵌套资源的章节创建页上放置一个关联(?)表单。

问题是,我对web开发非常陌生,我不确定我是否正在接近这个权利。 我将如何把一个表单发送:book_id到章节控制器? 这种方法可以工作吗? 是否有更有效的方法去实现它?

我意识到我的问题可能有点模糊,但任何帮助将不胜感激!


无聊的答案是:你的建议只对嵌套路线没有意义。

嵌套路线意味着在访问chapters#new动作时,您已经确切知道哪本书应该包含该章节。

但在光明的一面:您可以同时使用嵌套和非嵌套路线。

如果您想保留嵌套路线,但也提供newcreate操作,让用户为章节选择所需的书籍,则可以为章节创建添加非嵌套路线。

例如:

resources :books do
  resources :chapters
end
resources :chapters

请注意,您的控制器可能需要重写一下才能适应双路径。

如果你愿意,你可以在同一页面创建两个资源。 查找accepts_nested_attributes_for来做到这一点。 一旦你掌握了它,这真的很容易。

链接地址: http://www.djcxy.com/p/18449.html

上一篇: Rails nested resource creation on separate pages

下一篇: to with parameters secure?