2013-02-23 68 views
0
resources :books do 
    resources :chapters 
end 

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

现在我有...

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

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

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

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

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

回答

1

沉闷的答案是:你的建议没有意义,只有嵌套的路线。

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

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

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

例如:

resources :books do 
    resources :chapters 
end 
resources :chapters 

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

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

+0

感谢您的帮助! – jeebface 2013-02-23 22:59:12