繁体   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