我正在关注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中的内容,与教程中没有区别。有人能告诉我出了什么问题吗?
答案 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'