在show动作中没有匹配路由匹配

时间:2012-01-11 11:03:07

标签: ruby-on-rails routes

我正在尝试使用以下路线中的路径,这是rake routes

中的情况
  

章节GET /chapters/:id(.:format){:action =>“show”,:controller =>“chapters”}

chapter_path创建了一个指向/chapters/x的链接,这是正确的,但在尝试访问时遇到了路由错误。

  

没有路线匹配{:controller =>“章节”}`

这是我的路线(我使用浅路由来创建books_chaptersbook_chapters_new路径。

resources :books do
  resources :chapters, :shallow => true
end

当我用rake路线测试路线时,我得到books_chapters,books_chapters_new,章节和书籍,所以我不知道出了什么问题。

当我删除:shallow => true时,我可以访问/books/1/chapters/6,但我只想将其/chapters/6

这就是我的终端的样子

the routes should be working

因此/chapters/id/chapters/id/edit应该正常工作。

我已使用touch tmp/restart.txt重新启动服务器并运行rails s以查看路由是否也在那里工作,而rake routes正在为我提供可接受的路由,但它们对我不起作用

2 个答案:

答案 0 :(得分:0)

您是否为路径助手提供参数,例如

chapter_path(@chapter)

答案 1 :(得分:0)

我无法弄清楚如何获得:浅路径工作,并且没有关于如何使用的示例:在rails指南中浅,所以我只需要使用嵌套路线所以

resources :books do
  resources :chapters
end

现在这意味着chapters_urlchapters_path之类的工作无法发挥作用。

所以我必须在任何地方做这样的事情

book_chapter_url(@chapter.book, @chapter)

edit_book_chapter_path(@chapter.book, @chapter)

它有效,但有一些代码味道,因为我使用@chapter两次,整个网址应该只能通过章节ID解析。