3

我有一個案例,當我需要localhost:3000/dashboard指向基於用戶類型的不同視圖/控制器組合。我的申請中有兩種主要類型:SubscriberPublisher相同的命名空間,但不同的控制器和視圖在Rails中

Publisher登錄並進入/dashboard我需要顯示發佈儀表板。

Subscriber登錄並轉到/dashboard我需要顯示訂購者儀表板。

此時發佈商的儀表板被稱爲Dashboard,訂戶的儀表板被稱爲Profile。似乎對我有點骯髒。

問題是。根據特定用戶的類型調用正確的控制器,加載正確的數據並呈現正確的模板/佈局的最佳方式是什麼?

回答

2

我會考慮像下面的僞代碼,讓你開始。

控制器:

app/controllers/dashboard_controller.rb 

class Dashboard < ApplicationController 

def index  
    render, :user_type => current_user.user_type 
end 

查看: (使用助手改一下會顯示)。

views/dashboards/index.html.erb 

# display the content 

幫手。

helpers/dashboard_helper.rb 
module DashboardHelper(user_type) 
if user_type == 'publisher' 
    #set content/variables for publisher 
elsif user_type == 'Subscriber' 
    #set content/variables for subscriber 
else 
    set content/variables to default. 
end 
+0

謝謝邁克爾!但是,我想實施它的方式與您的建議不同,我確實遵循了您的建議。代碼如下所示: 'def index' '@publisher = @subscriber = current_user' 'render template:「#{current_user.type.underscore.pluralize}/dashboard」' 'end' – Ivan 2012-04-21 12:10:35

相關問題