为什么路由root不起作用?

时间:2015-05-29 04:53:02

标签: ruby-on-rails

我正在关注Michael Hartl的Ruby on Rails Tutorials教程,并尝试完成3.4.4节中的最后一步。当我将routes.rb更改为

Rails.application.routes.draw do
 root 'static_pages#home'
 get  'static_pages/help'
 get  'static_pages/about'
end

并重新启动http://localhost:3000/static_pages,他们说"我们很抱歉,但出了点问题"。然后我重新启动http://localhost:3000/static_pages/help并且它有效。然后我通过

检查路线
rake routes

结果显示:

Prefix Verb URI Pattern                   Controller#Action
          root GET  /                             static_pages#home
static_pages_help GET  /static_pages/help(.:format)  static_pages#help
static_pages_about GET  /static_pages/about(.:format) static_pages#about

我检查文件static_pages_controller.rb中的内容,与教程中没有区别。有人能告诉我出了什么问题吗?

2 个答案:

答案 0 :(得分:2)

嗯,通过此路线映射root 'static_pages#home',您说,当您点击http://localhost:3000/网址时,您将被映射到home控制器的StaticPages操作。< / p>

但您没有为http://localhost:3000/static_pages定义任何映射,根据route.rb文件,它是不正确的网址。这就是你收到错误的原因。

阅读rake routes输出的第一行,它清楚地说明了你的定义。

答案 1 :(得分:0)

root 'static_pages#home'相当于get '/', to: 'static_pages#home'。这意味着网址localhost:3000/正在路由到StaticPages控制器上的#home操作。

如果您希望localhost:3000/static_pages指向#home操作,请添加以下行:

get 'static_pages', to: 'static_pages#home'