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#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 =>网页#回家吗?
令人困惑,
谢谢!
编辑1:我没有得到我想要的答案,所以我假设我的问题是错的.我会把它分解成两部分:
>有什么区别?
match’/ pages / home’=> “网页#家”
和
root:to => “网页#家”
有些人说root将它带到你的根页面,我可以理解,但正如我上面所解释的,如果我只是根目录:pages / home显示一个路由错误. page / home应该与root页面一样,是否正确?
>有什么区别?
match’/ contact’,:to => “网页#接触”
和
match’/ pages / home’=> “网页#家
在语法上,第一行有:to =>而第二行没有.是要:需要吗?它有什么作用?
谢谢
解决方法
match '/something',:to => 'pages#something' match '/something' => 'pages#something'
是等同的在Rails中找到不止一种方式来说同样的事情并不罕见.常用的方法有很多符号.如果你关心,后者是我经常使用和看到的.
就根路径而言,这是发生了什么:root:to => ‘pages#home’正如你已经知道的那样将“/”映射到pages_controller.rb中的home方法.但是使用“page#home”不会创建url“pages / home”.它所做的就是告诉rails遇到“/”时执行什么.这就是为什么你还需要告诉rails遇到“pages / home”时该怎么办.路线定义是单向交易.
还有更多的我可以说,但我会尽量保持我的答案简短.如果你需要更多的澄清,让我知道.另外,this rails guide是一个很好的资源.