我想用更抽象的路由替换命令/users/:id
创建的正常路由。无法在我的应用中查看其他用户的个人资料,因此当前路线没有必要具体。resources
/profile
我试图用以下方法覆盖由“资源:用户”创建的路由:
get '/profile', to: 'users#show'
以及其他差异和组合,但似乎无法正确处理。控制器由于丢失而找不到用户,id
或者根本找不到路线。
谢谢您的帮助!
我想用更抽象的路由替换命令/users/:id
创建的正常路由。无法在我的应用中查看其他用户的个人资料,因此当前路线没有必要具体。resources
/profile
我试图用以下方法覆盖由“资源:用户”创建的路由:
get '/profile', to: 'users#show'
以及其他差异和组合,但似乎无法正确处理。控制器由于丢失而找不到用户,id
或者根本找不到路线。
谢谢您的帮助!
您可以在 routes.rb 文件中使用此代码:
resources :users, :except => :show
collection do
get 'profile', :action => 'show'
end
end
它将生成 url “/users/profile”。
但是,如果你只想使用'/profile',那么不要在用户资源块内创建路由作为集合。
resources :users, :except => :show
get 'profile' => "users#show", :as => :user_profile
它将重定向“/profile”以在用户控制器中显示操作。
您还可以在 routes.rb 文件中使用 match 关键字。
match 'users/:id' => 'users#show', as: :user_profile, via: :get
我建议简单地添加users/me
一条指向show
您UsersController
喜欢的操作的路线:
resources :users, only: [] do
collection do
get 'me', action: :show
end
end