2013-02-23 56 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