我的ChaptersController
没有直接路线(即site/chapters/:id
),但仅作为BooksController
的子路线存在(即site/books/:id/chapters/:id
)。但是,当我尝试去book /:id / chapters / new时,我收到以下路由错误:
Showing .../app/views/chapters/_form.html.erb where line #1 raised:
No route matches {:controller=>"chapters"}
我该如何解决这个问题?
答案 0 :(得分: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| %>
答案 1 :(得分:0)
我认为/app/views/chapters/_form.html.erb中有错误的路径
检查标记中的url。我想你忘了改变它嵌套在书中。
你也可以在这里粘贴_form.html.erb,所以我会指出来:)