【问题标题】:why no path names for custom routes in Rails为什么 Rails 中没有自定义路由的路径名
【发布时间】:2013-04-08 18:17:20
【问题描述】:

在我的 rails 应用程序中跟随 routes.rb

resources :users

导致“rake routes”的以下输出

 users        GET    /users(.:format)                 users#index
              POST   /users(.:format)                 users#create
 new_user     GET    /users/new(.:format)             users#new
 edit_user    GET    /users/:id/edit(.:format)        users#edit
 user         GET    /users/:id(.:format)             users#show
              PUT    /users/:id(.:format)             users#update
              DELETE /users/:id(.:format)             users#destroy

& 跟随在 routes.rb 中(对于我的自定义控制器 'home')

match  '/new_user'        =>          'home#new_user', via: [:get]
match  '/users/:id/edit'  =>          'home#edit_user', via: [:get]
match  '/users/:id'       =>          'home#show_user', via: [:get]
match  '/users/:id'       =>          'home#create_user', via: [:post]

导致“rake routes”的以下输出

GET    /new_user(.:format)                home#new_user
GET    /users/:id/edit(.:format)          home#edit_user
GET    /users/:id(.:format)               home#show_user
POST   /users/:id(.:format)               home#create_user

为什么第二种情况没有路径名?就像第一种情况一样 ('new_user', 'edit_user')

有没有办法为第二种情况提供路径名?因为我想在我的视图中使用这些路径名

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 routes custom-routes


    【解决方案1】:

    没有路径名,因为您没有指定路径名。如果您提供自定义路由而不是使用resources,则需要使用:as 来提供路径名:

    match '/new_user' => 'home#new_user', via: :get, as: :new_user
    

    您也应该只使用get 而不是match... via: :get

    get '/new_user' => 'home#new_user', as: :new_user
    

    但是,鉴于您的路线集,您最好继续使用resources,但通过:only 提供有限的操作列表并通过:controller 提供自定义控制器:

    resources :users, only: %w(new edit show create), controller: "home"
    

    【讨论】:

    • 谢谢..这很快,+1 :),还有一个问题是放弃'match... via::get'有什么好处吗?正如你上面所说的
    • 我的方式更短更清晰。更好的问题是:使用match... via: :getget 有什么优势吗?
    • 知道了..我会按照你的方式来
    猜你喜欢
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2011-06-05
    • 2017-05-17
    • 2011-01-27
    相关资源
    最近更新 更多