簡體   English   中英

如何在Ruby on Rails的視圖中訪問全局變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM