ruby-on-rails – 了解rails路由:在route.rb中匹配vs根

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 了解rails路由:在route.rb中匹配vs根前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在从这个链接跟踪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#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是一个很好的资源.

原文链接:https://www.f2er.com/ruby/272905.html

猜你在找的Ruby相关文章