2011-01-21 76 views
0

我在我的Rails應用程序中實現了Authlogic,該應用程序的工作和測試都很棒。用戶可以登錄,註銷等Rails + Authlogic @current_user問題 - 「Show」方法不再有效

然而,因爲我改變了我的方法在users_controller使用@current_user變量,沒有我的用戶的方法或形式(而不是「指數」奇怪的是其他...... )工作!

例如,這場「秀」的方法的工作原理,並顯示任何用戶(注:我想最終限制這在當前登錄的用戶以某種方式):用戶配置文件

def show 
    @user = User.find(params[:id]) 
end 

如果我按照如Authlogic顯示show方法軌演員和官方例子:

def show 
    @user = @current_user 
end 

我獲得各種undefined method METHOD for nil:NilClass錯誤。看起來雖然@current_user變量不包含任何用戶的信息。

我假設@current_user從CURRENT_USER方法拉動信息如下應用控制器定義:

我缺少什麼?我的直覺是用戶模型中的User對象和current_user方法之間沒有映射關係。任何幫助將不勝感激!

在此先感謝!

〜丹

回答

5

它不應該只是

def show 
    @user = current_user 
end 

沒有@

+0

正確的博客鏈接,設計提供了`current_user`方法給你。 – 2011-01-21 21:46:23

+0

這對我來說是有道理的,我知道我正在調用一個方法而不是預定義的變量。這有點令人困惑,因爲在線示例代碼中的大多數都將其設置爲@user = @current_user。再次感謝你的幫助!這就是爲什麼我喜歡StackOverflow – thoughtpunch 2011-01-22 02:10:50

1
def 
if @current_user 
@user = @current_user 
else 
@user = User.find(params[:id]) 
end 
end 

只是猜測,試試吧。

+0

這不是完整的答案,但我最終使用這個想法讓未登錄的用戶看到配置文件。謝謝! – thoughtpunch 2011-01-24 19:42:09

2

current_user是authlogic附帶的幫助程序,所以您必須不使用'@'來使用它。 通常情況下,您會創建@sothing以將其從控制器傳遞到視圖,因此您將訪問您在操作方法中準備的內容。

+0

這很有道理......我想知道他們爲什麼在Github上的示例代碼中設置了這種方式? – thoughtpunch 2011-01-22 02:09:10