2010-09-15 18 views
2

情景是這樣的:對於相同的控制器操作,處理多個佈局/視圖的最Rails'ish方法是什麼?

我的網站上有一些用戶。用戶有一個角色,這裏的相關部分是adminnormal。我也有一個模型,我們稱之爲SomeModel

我爲該網站創建了一個後端,它使用了一個admin佈局。所有管理員都可以完全訪問編輯任何內容。

問題出現在這個關係中:用戶 - >擁有 - > SomeModel。這意味着非admin 用戶可以擁有SomeModel的實例,並且應該能夠編輯此實例的數據。

SomeModel的控制器有一個編輯操作,然後迎合管理員和普通用戶。

不過,我不希望普通用戶seing的管理佈局,現在,我做到這一點的方法是,像這樣:

if current_user.admin? 
    render :layout => 'admin' 
end 

如果用戶是默認爲標準佈局不管理員。我在SomeModel的所有操作中都有這個,它看起來並不像Rails的做法。

有沒有更好的方法?

回答

4

您可以在控制器級別做到這一點:

class MyModelController < ActionController::Base 
    layout :user_or_admin_layout 

    def index 
     # fetching objects 
    end 

    private 
     def user_or_admin_layout 
     current_user.admin? ? "admin_layout" : "user_layout" 
     end 
    end 

有軌文檔中更多的例子爲layout

+0

感謝您的鏈接。我想我跳過了這部分文檔,這絕對是「更清潔」的感覺。 – rhardih 2010-09-15 19:53:08

相關問題