【问题标题】:Different users using the same dashboard url不同的用户使用相同的仪表板 url
【发布时间】:2016-04-14 04:07:38
【问题描述】:

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

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”?

【问题讨论】:

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


    【解决方案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 -->
    

    【讨论】:

    • 我不希望有大量 if 语句根据当前角色隐藏或显示内容,这就是为什么我希望它们在单独的视图中
    • 您可以使用此代码拥有单独的视图。只要做render "dashboard/admin"
    • 完美,正是我想要的!
    • 谢谢,请向多纳泰罗和米开朗基罗问好!
    【解决方案2】:

    你只能留下一条路线:

    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'
    

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

    【讨论】:

    • 使用这种方法,最好将 admin/seller/buyer 方法设为私有
    猜你喜欢
    • 2020-02-14
    • 2019-10-14
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2021-08-20
    • 1970-01-01
    相关资源
    最近更新 更多