2011-02-24 37 views
0

我有一個ChaptersController不具有直接的路線(即site/chapters/:id),但只存在作爲一個子路由BooksController(即site/books/:id/chapters/:id) 。但是,當我嘗試訪問books /:id/chapters/new時,出現以下路由錯誤:使控制器上存在的子控制器,如何修復軌道的形式路線

Showing .../app/views/chapters/_form.html.erb where line #1 raised: 

No route matches {:controller=>"chapters"} 

我該如何解決這個問題?

回答

1

好像你正在使用這種方式嵌套的路線:

resources :books do 
    resources :chapters 
end 

在這種情況下,你應該有命名路線'book_chapter'和'book_chapters'。您可以通過運行rake routes來檢查。

在你_form.html.erb部分,你需要改變這一行:

<%= form_for(@chapter) do |f|%> 

您需要明確指定表單的目標URL,大概也辦理創建和更新場景不同的URL。試試這樣的:

<%= form_for(@chapter, :url => (@chapter.new_record? ? book_chapters_path(@book) : book_chapter_path(@book, @chapter))) do |f| %> 
0

我想有在/app/views/chapters/_form.html.erb

檢查什麼網址是標籤錯誤的道路。我想你忘了把它改成嵌套在書本里。

你還不如貼_form.html.erb在這裏,所以我會指出來:)