抽象铁路线

时间:2013-09-03 12:57:16

标签: ruby-on-rails ruby-on-rails-4

我想用/users/:id命令替换由resources命令创建的普通/profile路由,并使用更抽象的get '/profile', to: 'users#show' 路由。在我的应用程序中无法查看其他用户配置文件,因此当前路由不是特定的。

我尝试用':/ p>覆盖'resources:users'创建的路由

id

和其他差异和组合,但似乎无法做到正确。由于缺少{{1}},控制器无法找到用户,或者根本无法找到路径。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

您可以在routes.rb文件中使用此代码:

resources :users, :except => :show
  collection do
    get 'profile', :action => 'show'
  end
end

它会生成网址“/ users / profile”。

但是,如果你只想使用'/ profile',那么不要在用户资源块中创建路由作为集合。

resources :users, :except => :show
get 'profile' => "users#show", :as => :user_profile

它会重定向'/ profile'以显示用户控制器中的操作。

答案 1 :(得分:0)

我建议您只需添加指向users/me show行为的UsersController路线,就像这样:

resources :users, only: [] do
  collection do
    get 'me', action: :show
  end
end

答案 2 :(得分:0)

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

match 'users/:id' => 'users#show', as: :user_profile, via: :get