ruby-on-rails - 了解 Rails 路线 : match vs root in routes. rb

标签 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

当我运行该站点时,它给了我一个错误:没有路由存在页面/主页。我在论坛上搜索,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

一切正常。但现在,我的问题是,两者之间有什么区别
1. match '/something', :to => 'pages#something'
2. match '/something' => 'pages#something'
3. root :to => 'pages#home'

基本上,我刚刚放的代码。根不应该占用主主页,我不需要匹配 pages/home => pages#home 吗?

好纠结

谢谢!

EDIT1:我没有得到我想要的答案,所以我认为我的问题是错误的。我将把它分成两部分:
  • 有什么区别:

    匹配 '/pages/home' => 'pages#home'

    root :to => 'pages#home'

  • 有人说 root 将它带到你的根页面,我可以理解,但正如我上面解释的,如果我只有 root:页面/主页显示路由错误。 pages/home 应该和根页面一样,对吗?
  • 有什么区别:

    匹配 '/contact', :to => 'pages#contact'

    匹配 '/pages/home' => 'pages#home

  • 在语法上,第一行有 :to => 而第二行没有。 to: 需要吗?它有什么作用?

    谢谢

    最佳答案

    我所知道的

    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是一个很好的资源。

    关于ruby-on-rails - 了解 Rails 路线 : match vs root in routes. rb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5733101/

    相关文章:

    ruby-on-rails - rspec 期望不符合我的期望

    ruby-on-rails - Gmaps4rails : Clustering not working?

    ruby-on-rails-3 - rails 3.1,capybara-webkit,为什么 page.execute_script 失败?

    ruby-on-rails - Rails : Previous and Next record from previous query

    ruby-on-rails - 使用 Spork 和 Guard 时启动错误

    ruby-on-rails - 由于 ActiveRecord::StatementInvalid: SQLite3::SQLException: 无法回滚,Rails delayed_job 不起作用

    ruby-on-rails - ROR/Hpricot : parsing a site and searching/comparing strings with regex

    ruby-on-rails - 如何在 rspec 中跳过 x 次测试

    ruby-on-rails-3 - 关于 capybara 的几个问题

    ruby-on-rails-3 - rails 3.1.1 引擎 - 使用可安装的引擎,是否可以访问父应用程序 Assets 、默认布局?