不同的用户使用相同的仪表板URL

时间:2016-01-09 14:22:55

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

我有三个角色的用户模型,管理员,买家,卖家。 我还有一个仪表板控制器,目前正在登录,每个用户都被定向到不同的仪表板操作...

application_controller.rb

def after_sign_in_path_for(resource)
    case resource.role
      when "buyer"
      buyer_dash_path
      when "seller"
      seller_dash_path
      when "admin"
      admin_dash_path
    end
  end

的routes.rb

 get 'dashboard/admin' => 'dashboard#admin', as: 'admin_dash'
 get 'dashboard/seller' => 'dashboard#seller', as: 'seller_dash'
 get 'dashboard/buyer' => 'dashboard#buyer', as: 'buyer_dash'

因此,当买家登录时,他们会被重定向到“/ dashboard / buyer”,管理员会被重定向到“/ dashboard / admin”等。 如何删除操作名称以便将所有用户重定向到“/ dashboard”?

2 个答案:

答案 0 :(得分:1)

您最好使用以下内容:

#config/routes.rb
resources :dashboard, only: [:index] #-> url.com/dashboard

#app/controllers/dashboard_controller.rb
class DashboardController < ApplicationController
   def index
      case current_user.role
        when "admin"
          #do something
          render "dashboard/admin"
        when "seller"
          #do something
          render "dashnoard/seller"
        else
          #do something
      end
   end
end

#app/views/dashboard/index.html.erb
<!-- do stuff in here -->

答案 1 :(得分:0)

你只能留下一条路线:

get 'dashboard' => 'dashboard#index'

在控制器中引入新动作:

def index
  redirect_to root_path unless current_user
  send(current_user.role)
  render current_user.role
end

如果当前用户为seller,则index操作将执行以下操作:

seller()
render 'seller'

通过这些更改,您无需更改应用中的任何其他内容。