路由多个配置文件视图

时间:2016-03-14 12:21:34

标签: ruby-on-rails routing sti

我不知道如何实现多用户个人资料的显示。 对于少数类型的人,我使用STI继承。

我想要什么?

我想为每种类型的人创建最简单的路由,并为每种类型的人显示和编辑配置文件。现在我有这个: enter image description here

我只考虑了人物模型的配置文件视图(backend_people_profile),以及每种类型的update_profile。这是对的吗?现在我有太多的重复路径。

的routes.rb

namespace :backend do
      resources :managers, except: [:new, :create] do
        get '/profile', to: 'people#show_profile'
      end

      resources :clients, except: [:new, :create] do
        get '/profile', to: 'people#show_profile'
      end

      resources :receptionists, except: [:new, :create] do
        get '/profile', to: 'people#show_profile'
    end

      resources :trainers, except: [:new, :create] do
        get '/profile', to: 'people#show_profile'
      end

      resources :lifeguards, except: [:new, :create] do
        get '/profile', to: 'people#show_profile'
      end
  end

1 个答案:

答案 0 :(得分:1)

namespace :backend do
  resources :people

  [:clients, :receptionists, :trainers, :lifeguards].each |type| do
     get type, to: "people#index"
  end
end

我会从最简单的设置开始。在这种情况下,您只能拥有基本people类型的完整CRUD路由。这可以避免使用大量执行完全相同操作的路径来混乱您的API。

对于每个子类型,您只需要一个索引操作,有点像:

GET /people?type=trainer

您可能需要考虑是否确实需要单独的配置文件路由 - 除非您需要使用传统的CRUD路径获得两种截然不同的表示:

GET|POST         /people
GET|DELETE|PATCH /people/:id
GET              /people/:id/new
GET              /people/:id/edit

另一种情况是用户是CRUD的应用程序:由管理员编辑,您需要为常规用户注册提供单独的界面。在这种情况下,您可以这样做:

namespace :backend do
  resources :people
  [:clients, :receptionists, :trainers, :lifeguards].each |type| do
     get type, to: "people#index"
  end
end

# public facing route
resources :registrations, only: [:new, :create, :show, :edit, :update]