[英]Instance variable in controller with Ruby On Rails
当有人登录我的应用程序时,我使用:
def create
@user = User.authenticate(params[:email], params[:password])
[...]
end
那么,当有人注销时:
def destroy
user = User.find_by_id(session[:user_id])
[...]
end
据我所知, variable scopes
基于作用域 ,至少在Ruby(on Rails)上。
我们的朋友说:
在控制器的情况下,它仅针对该HTTP请求,对象和实例变量。
好。 我在create
方法上create
变量范围对于destroy
方法没用,但是我正在考虑这个主题并出现以下问题: 无论HTTP请求如何,都有一种方法可以保留@user
用于该控制器?
我的意思是, @
在这种情况下对我来说似乎没用,因为它不灵活。 我不知道,对我来说听起来很奇怪,我想不能重复使用它。
这就是网络的运作方式以及http为什么是“无状态协议”。 您必须了解您没有开始运行程序并在用户注销时将其停止。 但是你为每一个请求“重新启动”程序。 这是一个新的实例,一个对最后一个一无所知的新进程,并确保与它共享无记忆。 实际上,处理创建的Rails实例和处理destroy的Rails实例可以轻松地在两个物理上不同的服务器上运行!
没有状态(但是您在会话存储或URL参数中放置了什么)。 @在这种情况下意味着你的视图可以使用这个数据(在Ruby上下文中意味着Rails已经做了一些技巧来将它移交给那里,因为这些是两个不同的类,视图对控制器一无所知实例变量)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.