2013-06-03 41 views
2

我有一個具有2種不同佈局的rails 3應用程序。一個用於最終用戶,另一個用於管理應用程序的管理控制檯。Rails 3中雙重佈局的最佳實踐

這通常很容易處理,因爲我可以定義一個控制器來使用1佈局。這適用於大多數設置,因爲它們不涉及最終用戶。但是我的一些模型會。例如,管理員編輯用戶配置文件與用戶。爲了使這項工作,我應該有一個模型重複控制器?一個用於管理控制檯,一個用於用戶?好像我已經把DRY扔出了窗戶。

在此先感謝您的任何反饋意見。

回答

1

在我看來,管理員可能與用戶做的事情不同,而不是最終用戶會這樣做,因此不同的控制器可能不會完全不順暢。

但是,如果它們完全相同,而您只想要有不同的佈局,那麼您可以根據當前用戶設置佈局。像這樣的東西可以工作:

layout :determine_layout 

def determine_layout 
    return 'admin' if current_user && current_user.admin? 
    'application' 
end 
+0

我曾考慮過,但管理員用戶只能看到管理員視圖。但我同意你這可能是最好的方法。他們在查看用戶結束代碼 – BDubbs

1

你不需要重複你的代碼。只需將一個授權圖層添加到您的應用程序中,您就可以在現有代碼中創建這些功能。 爲了實現這一點,我會建議你康康舞寶石:

康康舞是Ruby on Rails的制約 哪些資源給定用戶被允許訪問的授權庫。在控制器,視圖和數據庫查詢之間,在單個位置(Ability類)中定義的所有權限爲 ,而不重複 。

您可以看到更多並查看project page上的示例,並且還有一個Railscast

+0

Upvoted時可以只擁有一個非管理員帳戶,但因爲他先到那裏,所以我給了Alex一個答案。 – BDubbs