【问题标题】::as in rails routes.rb:就像在rails routes.rb中一样
【发布时间】:2011-06-09 10:26:16
【问题描述】:

config/routes.rb,我都试过了:

root :to => 'things#index', :as => 'things'

root :to => 'things#index'

当我点击http://localhost:3000/ 时,两种方法都有效,似乎没有什么不同。

:as 选项的用途是什么?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 routing


    【解决方案1】:

    :as 选项创建一个命名路径。然后你可以在你的控制器和视图中调用这个路径(例如redirect_to things_path)。这对于根路径不是很有用(因为它已经命名为 root),但对于您添加的新路由非常有用。

    【讨论】:

      【解决方案2】:

      :as 选项形成一个命名路由。

      通常用于非根路由。例如:

      match '/search' => 'search#search', :as => 'search' # SearchController#search

      然后您可以执行以下操作:

      <%= link_to search_path, 'Click Here to Search!' %>

      search_pathsearch_url 的定义是因为 :as

      对于根路由,您实际上并不需要 :as,因为 URL 帮助程序 root_pathroot_url 是由 Rails 为您定义的。

      【讨论】:

      • 用于创建路径和 URL 助手!
      【解决方案3】:

      兼容 Rails 4。

      path_to_your_app/config/routes.rb

      get "/profile/edit" => "users#profile_edit", :as => "edit_me"
      

      从 ruby​​ 2.0 开始,您可以使用:

      get "/profile/edit", to: "users#profile_edit", as: "edit_me"
      

      path_to_your_app/app/views/**in 需要查看

      <%= link_to "Edit profile", edit_me_path %>
      

      如果您不确定是否需要,请勿使用match

      当你在下一个模式中使用它时会产生一个漏洞:

      match ':controller/:action/:id'
      

      来自文档:

      你不应该在你的路由器中使用match方法 指定 HTTP 方法。如果您想向两者公开您的操作 GET 和 POST,通过添加:[:get, :post] 选项。如果你想暴露 您对 GET 的操作,在路由器中使用 get:

      代替:match "controller#action"

      做:get "controller#action"

      阅读更多:

      关于比赛

      http://github.com/rails/rails/issues/5964

      关于路线映射

      http://apidock.com/rails/v4.0.2/ActionDispatch/Routing/Mapper/Base/match

      http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Base.html

      关于一般路线

      http://api.rubyonrails.org/classes/ActionDispatch/Routing.html

      【讨论】:

        猜你喜欢
        • 2021-06-20
        • 1970-01-01
        • 2019-03-13
        • 1970-01-01
        • 2011-02-01
        • 2013-08-04
        • 1970-01-01
        • 1970-01-01
        • 2013-01-16
        相关资源
        最近更新 更多