:as in rails routes.rb

后端 未结 3 1416
情书的邮戳
情书的邮戳 2020-12-04 15:12

In config/routes.rb, I tried both:

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

and

root :to => \'         


        
相关标签:
3条回答
  • 2020-12-04 15:44

    Rails 4 compatible.

    In path_to_your_app/config/routes.rb

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

    Since ruby 2.0 you can use:

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

    In path_to_your_app/app/views/**in required view

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

    Do not use match if you aren't sure you need it:

    It creates a vulnerability when you use it in next pattern:

    match ':controller/:action/:id'
    

    From documentation:

    You should not use the match method in your router without specifying an HTTP method. If you want to expose your action to both GET and POST, add via: [:get, :post] option. If you want to expose your action to GET, use get in the router:

    Instead of: match "controller#action"

    Do: get "controller#action"

    Read more about:

    About match

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

    About routes mapping

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

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

    About routes in general

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

    0 讨论(0)
  • 2020-12-04 15:56

    The :as option forms a named route.

    Usually it's used in a non-root route. For example:

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

    You could then do something like:

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

    search_path and search_url are defined because of the :as

    For a root route, you don't really need :as because the the URL helpers root_path and root_url are defined for you by Rails.

    0 讨论(0)
  • 2020-12-04 16:08

    The :as option creates a named path. You can then call this path in your controllers and views (e.g. redirect_to things_path). This isn't very useful for the root path (as it already named root), but is very useful for new routes you add.

    0 讨论(0)
提交回复
热议问题