2010-05-23 92 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]