0

我想用更抽象的路由替换命令/users/:id创建的正常路由。无法在我的应用中查看其他用户的个人资料,因此当前路线没有必要具体。resources/profile

我试图用以下方法覆盖由“资源:用户”创建的路由:

get '/profile', to: 'users#show'

以及其他差异和组合,但似乎无法正确处理。控制器由于丢失而找不到用户,id或者根本找不到路线。

谢谢您的帮助!

4

3 回答 3

1

您可以在 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”以在用户控制器中显示操作。

于 2013-09-03T13:13:06.603 回答
0

您还可以在 routes.rb 文件中使用 match 关键字。

match 'users/:id' => 'users#show', as: :user_profile, via: :get
于 2013-09-03T13:39:48.427 回答
0

我建议简单地添加users/me一条指向showUsersController喜欢的操作的路线:

resources :users, only: [] do
  collection do
    get 'me', action: :show
  end
end
于 2013-09-03T13:02:07.810 回答