gpt4 book ai didi

ruby-on-rails - 为什么 Rails 中没有自定义路由的路径名

转载 作者:行者123 更新时间:2023-12-03 21:09:02 25 4
gpt4 key购买 nike

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

resources :users

导致“rake 路线”的以下输出
 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 (对于我的自定义 Controller '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 路线”的以下输出
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')

有没有办法为第二种情况设置路径名?因为我想在我的 View 中使用这些路径名

最佳答案

没有路径名,因为您没有指定路径名。如果您提供自定义路由而不是使用 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 通过 :controller :
resources :users, only: %w(new edit show create), controller: "home"

关于ruby-on-rails - 为什么 Rails 中没有自定义路由的路径名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15886101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com