[英]How to access global variable in a view in Ruby on Rails?
我有一個用戶模型。
我有一個會話控制器,其中有一個全局用戶變量,其分配如下:
$user = User.authenticate(params[:session][:email], params[:session][:password])
(我已將用戶設置為全局用戶,以嘗試解決此問題,因此,如果有更好的方法,請告訴我!)
我需要使用登錄用戶的電子郵件作為參數發送到網站的Flex部分。 目前,我正在如下創建鏈接:
<%= link_to "secondpage", secondpage_path(:email => @session.$user.email)
但我收到以下錯誤:
編譯錯誤/Users/benhartney/rails_projects/talk/app/views/layouts/_header.html.erb:12:語法錯誤,意外的tGVAR ..._ path(:email => @ session。$ user.email)).to_s ); @output_buffe ...
還有一個小箭頭指向$ user
如果我從$ user中刪除$,則會出現此錯誤:
nil:NilClass的未定義方法“用戶”
如果我刪除
(:email => @session.user.email)
部分,一切正常,所以我認為除此以外的所有代碼都可以。
誰能告訴我我做錯了什么?
謝謝閱讀!
據我了解,您不能在某事局部使用全局變量(這一次,您不能在會話局部使用全局變量)
如果您堅決需要某種全局變量,請嘗試使用:email => $user.email
。
我認為您正在尋找的是會話變量。
Rails主要是用於創建Web應用程序的框架,而http是無狀態的,即每個請求都不知道之前發生了什么。 為了克服這種限制,Web開發人員使用cookie或會話變量來模擬跨請求的狀態(即數據)的維護。
查看http://guides.rubyonrails.org/action_controller_overview.html#session
您也可以嘗試
Thread.current[:email]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.