2009-04-24 49 views
5

使用管理部分和公開部分設計Web應用程序。感覺就像只有「索引」和「顯示」的公共控制器有點多餘。我讀過的所有建議都爲admin提供了一個名稱空間,這很好。我只是想知道我是否應該有一個控制器加入動作,比如說「list_public」或類似的東西。Rails - 兩個控制器或添加動作?

我是Rails的新手,所以也許我只是關心什麼。我只是不喜歡將所有這些控制器,視圖,助手名稱分散在我的項目目錄中的想法。

任何人都有這方面的見解?提前致謝。

回答

7

我會說有兩個控制器(一個公共和一個管理員)是最好的解決方案。

現在你可以做的是讓控制器調用與動作中的相關動作相同的方法。

class MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    end 
end 

class Admin::MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    # Admin only stuff goes here 
    end 
end 
+0

謝謝,馬特。這是有道理的,我只需要驗證它不是「過度的」。 – TMB 2009-04-24 18:24:38

6

正如馬特說,但你也可以這樣做:

class MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    end 
end 

class Admin::MyController < MyController 
    def show 
    super 
    # Admin only stuff goes here 
    end 
end 

這意味着,你可以專注於更專業的情況下,爲聯繫:: myController的而不是重複代碼。