2009-07-28 59 views
2

我有一個用戶模型,其中包含用戶名,電子郵件,家鄉等信息。當用戶登錄後,他可以通過顯示頁面(例如/ users/723)編輯他的任何信息。如何在Rails中顯示公共版本的用戶配置文件?

我想要有一個「公共」版本的這個頁面,可以被沒有登錄的人或某人登錄爲別人的人查看。它將具有關於用戶的不同級別的信息,並且沒有任何編輯信息的鏈接。

什麼是最簡潔的方式來正確顯示這個頁面的三個不同版本?

附錄

我目前使用authlogic進行身份驗證,acl9進行訪問控制。但是,我不認爲這是認證和授權的問題。我認爲這是一個控制器/視圖設計的問題。用戶是否登錄或擁有這些信息是偶然的。如果你想根據某些會話狀態以三種不同的方式顯示小工具,我想你可以使用這個問題的答案。

回答

4

有很多方法可以做到這一點,我不認爲有一個最乾淨的方式。

我可能會將頁面分解爲部分信息,其中一部分用於您需要的每個信息分組。

然後你可以有變量控制哪些部分得到渲染。

例如(在HAML):

- if @admin 
    render :partial => 'admin_panel' 

對於真正簡單的東西,你可以內聯的,如果(並且不具有部分)

另外,如果東西是失控的,你可以爲每個「顯示」頁面提供不同的視圖。

+0

我同意Sam對這一點的看法,並且根據不同的不同,可能會更有意義的做出更改。例如,在一個我只想爲管理員啓用快速編輯功能的網站上,這是視圖中的一個簡單條件,但我不想在差異很小的情況下展開部分內容。 – scottru 2009-08-21 07:00:50

0

對於用戶配置文件(以及用戶身份驗證),我強烈建議您查看Authlogic。它使一切都非常簡單,並且設計得非常好。你基本上添加一個過濾器之前,說:

before_filter :require_login, :only => [:edit, :update] 

然後,你必須登錄去編輯(因此發佈更新),否則是公開可見的。

您可以從here下載示例應用程序。

它還支持通過一些插件與OpenID,LDAP,Facebook Connect和OAuth(Twitter)進行集成,這些插件在項目的github頁面上進行了討論(鏈接如上)。

我希望我的回答很有幫助。

+0

@Mike,我認爲OP已經有了一些認證和授權的方法,他只是在尋找一種方法來徹底打破他的觀點。 – 2009-07-28 03:16:54

1

我想你應該創建第二個控制器(例如memberprofiles控制器)。 因此,您可以從公共訪問區域拆分用戶編輯區域。

相關問題