oky*_*eni 13 ruby-on-rails ruby-on-rails-3
我正在通过以下链接关注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
Run Code Online (Sandbox Code Playgroud)
当我运行该网站时,它给了我一个错误:没有路由存在页面/主页.我在论坛周围搜索,ppl建议把匹配'/ pages/home'=>'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
Run Code Online (Sandbox Code Playgroud)
一切正常.但现在,我的问题是,有什么区别
1. match '/something', :to => 'pages#something'
2. match '/something' => 'pages#something'
3. root :to => 'pages#home'
Run Code Online (Sandbox Code Playgroud)
基本上,我刚刚提出的代码.根本不应该采取主要主页,我不会需要匹配页面/主页=>页面#home?
太混乱了
谢谢!
编辑1:我没有得到我想要的答案,所以我认为我的问题是错的.我将其细分为两部分:
有什么区别:
匹配'/ pages/home'=>'pages #home'和root:to =>'pages #home'
有人说root将它带到你可以理解的根页面,但正如我上面解释的那样,如果我只有root:页面/ home显示路由错误.pages/home应该与根页面相同,对吗?
有什么区别:
匹配'/ contact',:to =>'pages #contact'和match'/ pages/home'=>'pages #home
语法上,第一行有:to =>而第二行没有.是:需要吗?它有什么作用?
谢谢
bre*_*ish 14
我所知道的
match '/something', :to => 'pages#something'
match '/something' => 'pages#something'
Run Code Online (Sandbox Code Playgroud)
是等价的.在Rails中找到不止一种说法相同的方法并不罕见.对于常用方法,速记符号比比皆是.如果你关心,后者是我使用和更经常看到的.
就根路由而言,这是正在发生的事情:root :to => 'pages#home'正如您所知,将"/"映射到pages_controller.rb中的home方法.但是使用"pages#home"不会创建URL"pages/home".它所做的就是告诉rails遇到"/"时要执行什么.这就是为什么你需要告诉rails遇到"pages/home"时要做什么.路线定义是单向交易.
我可以说更多,但我会尽量保持我的答案简短.如果您需要更多说明,请与我们联系.此外,这个导轨指南是一个很好的资源.
| 归档时间: |
|
| 查看次数: |
17934 次 |
| 最近记录: |