我有一个不同方法的控制器。
在第一种方法中,authorize
我实例化了一个我想在另一种方法中重用的对象。问题是两种方法都有不同的视图,控制器实例不会保持不变。
她是我的代码
def authorize
@session ||= get_session
puts @session
@authorize_url = @session.get_authorize_url
end
def list
puts self
@session ||= get_session
@client = DropboxClient.new(@session, ACCESS_TYPE)
metadata = get_meta_data("/")
@files = []
metadata.each do |data|
@files.push data
end
@files
end
那么如何重用@session变量?
最佳菲尔
答案 0 :(得分:0)
你没有,真的。控制器中呈现视图的每个公共方法都是请求的端点。请求的生命周期就此结束。
要在请求之间保留数据,您应该使用会话。这可能会有点混乱,因为您确实试图在请求之间保留一个名为@session
的实例变量,但这就是它们的用途。
Rails通过控制器中可用的session
哈希公开会话数据。有关Rails如何处理会话的更多信息,请参见Rails Documentation
class YourController < ApplicationController
def authorize
@session ||= get_session
session[:dropbox_session] = @session
end
def list
@client = DropboxClient.new(session[:dropbox_session], ACCESS_TYPE)
end
end