2012-06-06 56 views
0

我正在使用設計註冊模型/控制器/視圖(做新的註冊)和用戶模型做編輯/更新/顯示。Rails:Devise - user_signed_in not recognized

一切似乎工作正常(註冊,確認等)。當我嘗試在我的應用程序中使用user_signed方法時遇到問題。我收到以下錯誤消息:

undefined local variable or method `user_signed_in' 

我研究StackOverflow上這個問題,將我從幾個Q &一個會議瞭解到,這裏就是我所做的:

在我的用戶模型(用戶。 RB),我有以下幾點:

devise :database_authenticatable 

在我的用戶控制,我增加了以下內容:

before_filter :authenticate_user! 

但我仍然收到錯誤。我也嘗試將before_filter添加到註冊控制器和應用程序控制器,但我仍然收到錯誤消息。

任何想法?

解決方法

我使用some_action如果current_user?

作爲解決方法,但我仍然有興趣確定是否有人對原始問題有答案。

回答

3

嘗試增加一個問號

user_signed_in? 
+0

我不明白這一點。 <%= debug(「user signed in」)if user_signed_in? %>工作,但是 <%if user_signed_in%> <%= debug(「另一個用戶登錄」)%> <% end %>不起作用。這兩個序列不完全一樣嗎? – EastsideDeveloper

+0

不,他們不是。 Ruby約定是一個以?結束的方法定義?返回一個布爾值。但它是實際方法定義的一部分。 user_signed_in本身不會返回任何內容,因爲該名稱沒有方法或變量。但是有一個user_signed_in? – DVG

+0

'?'是方法名稱的一部分。 Ruby在函數名稱中可以有標點符號。 'def a? {}','def a?b {}','def a!b {}'。 – Chloe