2010-05-23 94 views
0

我有一個用戶模型。如何在Ruby on Rails的視圖中訪問全局變量?

我有一個會話控制器,其中我有如下分配一個全局用戶變量:

$user = User.authenticate(params[:session][:email], params[:session][:password]) 

(我已經取得了用戶的全球只是爲了嘗試解決這個問題,所以如果有一個更好的方式請讓我知道!)

我需要使用登錄用戶的電子郵件作爲參數發送到我的網站的Flex部分。目前我創建的鏈接如下:

<%= link_to "secondpage", secondpage_path(:email => @session.$user.email) 

但我發現了以下錯誤:

compile error /Users/benhartney/rails_projects/talk/app/views/layouts/_header.html.erb:12: syntax error, unexpected tGVAR ..._path(:email => @session.$user.email)).to_s); @output_buffe...

還有在$用戶

一個小箭頭指向如果我刪除$用戶$的,我得到這個錯誤:

undefined method `user' for nil:NilClass

如果我刪除

(:email => @session.user.email) 

部分,一切工作正常,所以我認爲除了這個以外的所有代碼都可以。

誰能告訴我我做錯了什麼?

感謝您的閱讀!

回答

1

我想你正在尋找的是一個會話變量。

Rails主要是一個用於創建Web應用程序的框架,而http是無狀態的,即每個請求都不知道以前發生了什麼。爲了克服這個限制,Web開發人員使用cookie或會話變量來模擬跨請求的狀態維護,即數據維護。

退房http://guides.rubyonrails.org/action_controller_overview.html#session

+0

非常感謝,這完美地工作。 – ben 2010-05-24 01:05:26

1

你不能有一個全局變量,局部的東西,因爲據我所知(這個時候,你不能有一個全局變量是本地會話)

嘗試使用:email => $user.email ,如果你」重申堅持你需要一個全局變量來完成某件事情。

0

您也可以嘗試

Thread.current[:email]