2016-02-04 83 views
1

我想訪問一個變量,當用戶(使用Devise)登錄或註銷時傳入。Rails訪問變量以外的設計控制器

所以我編輯的設計會話控制器(/controllers/devise/sessions_controller.rb)設置一個變量當用戶登錄/退出:

def create 
@signed_in_token = "something" 

但是我現在想在/views/layouts/application.html.erb訪問此變量。它似乎沒有出現...

回答

1

問題在那裏,此操作使用redirect_to方法後調用。您可以使用flash obejct將變量傳遞給下一個渲染。

def create 
    flash[:you_variable] ="test" 

而且

<%= flash[:you_variable] %> 
+2

或者你希望將其存儲在會話中,或在數據庫中的用戶比你可以在視圖訪問它。 Rails Flash僅適用於下一個請求,然後被清除。會話將持續整個會話,但在rails默認情況下在cookie中佔用空間。當然,數據庫一直持續到您修改它爲止。但是你確實需要將它存儲在持久的地方。理解Web/HTTP在開發Rails時的工作原理是很好的,或許可以閱讀。內存中的實例變量僅適用於當前請求。 – jrochkind

+0

'flash [:variable]'的作品@ mixan946用於登錄謝謝。但是出於某種原因,當它想要做類似的事情退出時它不起作用?有任何想法嗎? – Jmohey

+0

請查看日誌,看看退出後有多少次重定向,如果超過1次,則閃存比過期少。您可以嘗試按照@jrochkind的建議在會話中存儲此變量 – mixan946

相關問題