我正在关注此链接的rails教程: http://ruby.railstutorial.org/chapters/filling-in-the-layout#code:static_page_routes
在/config/routes.rb文件中,我有
SampleApp::Application.routes.draw do
match '/contact', :to => 'pages#contact'
match '/about', :to => 'pages#about'
match '/help', :to => 'pages#help'
root :to => 'pages#home'
end
当我运行网站时,它给了我一个错误:没有路由存在页面/主页。我搜索论坛和ppl建议把匹配'/ pages / home'=> '网页#家'
我做了:
SampleApp::Application.routes.draw do
match '/contact', :to => 'pages#contact'
match '/about', :to => 'pages#about'
match '/help', :to => 'pages#help'
match '/pages/home' => 'pages#home'
root :to => 'pages#home'
end
一切正常。但现在,我的问题是,之间有什么区别
1. match '/something', :to => 'pages#something'
2. match '/something' => 'pages#something'
3. root :to => 'pages#home'
基本上,我刚刚提出的代码。根本不应该采取主要主页,我不会需要匹配页面/ home =>网页#回家?
如此令人困惑,
谢谢!
EDIT1:我没有得到我想要的答案,所以我认为我的问题是错的。我将其细分为两部分:
有什么区别:
匹配'/ pages / home'=> “网页#家” 和 root:to => '网页#家'
有人说root将它带到你可以理解的根页面,但正如我上面解释的那样,如果我只有root:页面/ home显示路由错误。 pages / home应该与根页面相同,对吗?
有什么区别:
匹配'/ contact',:to => “网页#接触” 和 匹配'/ pages / home'=> “网页#回家
语法上,第一行有:to =>而第二行则没有。是:需要吗?它做了什么?
感谢
答案 0 :(得分:14)
据我所知
match '/something', :to => 'pages#something'
match '/something' => 'pages#something'
是等价的。在Rails中找到不止一种说法相同的方法并不罕见。对于常用方法,速记符号比比皆是。如果你关心,后者就是我经常使用的东西。
就根路由而言,以下是正在发生的事情:root :to => 'pages#home'
正在将“/”映射到pages_controller.rb中的home方法,如您所知。但是使用“pages#home”不会创建URL“pages / home”。它所做的就是告诉rails遇到“/”时要执行什么。这就是为什么你需要告诉rails遇到“pages / home”时要做什么。路线定义是单向交易。
我可以说更多,但我会尽量简短地回答。如果您需要更多说明,请与我们联系。此外,this rails guide是一个很好的资源。
答案 1 :(得分:1)
root :to => 'pages#home'
网址/
将映射到pagescontroller
home
操作。
/something
将成为pagescontroller
something
行动的网址映射
答案 2 :(得分:0)
root :to => "pages#home"
是默认路由,即当您转到“yourdomain.com/”时,它会路由到页面控制器中的主页操作。