Ruby on rails 新手问题:必须在浏览器中键入localhost/controller/index,才能在Rails中显示索引方法。为什么?

Ruby on rails 新手问题:必须在浏览器中键入localhost/controller/index,才能在Rails中显示索引方法。为什么?,ruby-on-rails,Ruby On Rails,我是Rails新手,正在阅读Sitepoint的简单Rails 2,但我使用的是Rails 3.0.0。在书中,我们刚刚设置了第一个控制器(StoriesController),启动了服务器并输入了http://localhost:3000/stories并且它应该显示index.html.erb文件,但是当我键入该url时,我得到了“路由错误:没有路由匹配”/stories“但是当我输入http://localhost:3000/stories/index它工作正常。有人能解释一下为什么在我转

我是Rails新手,正在阅读Sitepoint的简单Rails 2,但我使用的是Rails 3.0.0。在书中,我们刚刚设置了第一个控制器(StoriesController),启动了服务器并输入了
http://localhost:3000/stories
并且它应该显示
index.html.erb
文件,但是当我键入该url时,我得到了“路由错误:没有路由匹配”/stories“但是当我输入
http://localhost:3000/stories/index
它工作正常。有人能解释一下为什么在我转到localhost/stories时rails没有隐式加载index.html.erb文件吗?

这取决于您创建路由的方式(在
config\routes.rb中)。不幸的是,如果您搭建了一个控制器,rails现在会生成如下的路由:

get 'posts#index'
如果它是restful控制器,那么最好编写

resources :posts
或者,如果它是一个特殊的控制器(只有一个索引操作),您可以编写

match '/posts' => 'posts#index' 

要提供回退
匹配:通常避免使用控制器(/action(/:id(:format))
。因为它会打开所有控制器方法。首选的方法是明确声明如何访问您的站点。

我发现,通过在我的routes.rb文件中添加
match':controller(/:action(/:id(:format))”
可以解决问题,但有人知道为什么我们必须在Rails 3中这样做吗?