红宝石和铁轨的资源路线

时间:2014-02-08 04:41:04

标签: ruby-on-rails ruby routes helper

我有

资源:博客

在我的routes.rb文件中声明,但是当我尝试访问控制器或html.erb文件中的blog_path时,我收到以下错误:

没有路线匹配{:controller =>“blog”,:action =>“show”}缺少必需的键:[:id]

我创建了一个名为BlogController的控制器,并在views目录中使用show.html.erb文件定义了方法show。如果我定义:

匹配'/ blog',以:'blog#show',通过:'get'代替,然后blog_path工作正常。

我的理解是资源:博客只是匹配'/博客'的语法糖,来自:'博客#show',来自:'get'和一堆其他路线。请帮忙。

3 个答案:

答案 0 :(得分:8)

blog_path用于生成博客的路径,因此您需要id或博客对象,此助手会生成/blogs/12blogs#show之类的路径,以及{{1用于显示对象。 blogs#show生成blogs_path/blogs(就像所有博客一样)。

查看2 Resource Routing: the Rails Default

blogs#index

您使用了resources :photos GET /photos index display a list of all photos GET /photos/new new return an HTML form for creating a new photo POST /photos create create a new photo GET /photos/:id show display a specific photo GET /photos/:id/edit edit return an HTML form for editing a photo PATCH/PUT /photos/:id update update a specific photo DELETE /photos/:id destroy delete a specific photo 而没有使用resources :blog。它会生成

s

答案 1 :(得分:4)

像这样制作资源复数 资源:博客

制作控制器名称blogs_controller.rb及其类名BlogsController

这是rails标准

答案 2 :(得分:0)

我最近开始使用Rails,但我注意到当Rails为我生成一个控制器时,它用名称和字控制器之间的下划线命名。

类似于" blog_controller.rb",几天前我用一个没有下划线替换了一个并得到了类似的错误,而不是为什么。

也许对你有所帮助。

问候!