我正在尝试使用以下路线中的路径,这是rake routes
章节GET /chapters/:id(.:format){:action =>“show”,:controller =>“chapters”}
chapter_path创建了一个指向/chapters/x
的链接,这是正确的,但在尝试访问时遇到了路由错误。
没有路线匹配{:controller =>“章节”}`
这是我的路线(我使用浅路由来创建books_chapters
和book_chapters_new
路径。
resources :books do
resources :chapters, :shallow => true
end
当我用rake路线测试路线时,我得到books_chapters,books_chapters_new,章节和书籍,所以我不知道出了什么问题。
当我删除:shallow => true
时,我可以访问/books/1/chapters/6
,但我只想将其/chapters/6
这就是我的终端的样子
因此/chapters/id
和/chapters/id/edit
应该正常工作。
我已使用touch tmp/restart.txt
重新启动服务器并运行rails s
以查看路由是否也在那里工作,而rake routes
正在为我提供可接受的路由,但它们对我不起作用
答案 0 :(得分:0)
您是否为路径助手提供参数,例如
chapter_path(@chapter)
答案 1 :(得分:0)
我无法弄清楚如何获得:浅路径工作,并且没有关于如何使用的示例:在rails指南中浅,所以我只需要使用嵌套路线所以
resources :books do
resources :chapters
end
现在这意味着chapters_url
或chapters_path
之类的工作无法发挥作用。
所以我必须在任何地方做这样的事情
book_chapter_url(@chapter.book, @chapter)
或
edit_book_chapter_path(@chapter.book, @chapter)
它有效,但有一些代码味道,因为我使用@chapter两次,整个网址应该只能通过章节ID解析。