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