我正在使用模块化 Sinatra,这些代码
def is_login?
session[:auth_token].nil? # error: undefined variable or method `session`
end
if is_login?
menu['Logout'] = '/logout'
else
menu['Login'] = '/login'
end
get '/logout' do
session[:auth_token] = nil
end
那些代码返回一个错误undefined local variable or method 'session' for main:Object
,因为会话只适用于内部get
,如何使会话哈希可以从外部访问?
我尝试了另一种选择,即is_login?
进入 helper 并作为define_method
它可以访问session
,但是出现了类似的问题,我无法调用is_login?
它,因为它没有定义,这里是代码:
helpers do
define_method :logged_in? do
session[:access_token].nil?
end
if is_login? # error: undefined method `logged_in?`
menus['Logout'] = '/logout'
else
menus['Login'] = '/login'
end
end