Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session 希罗库上的西纳特拉:可以';t将会话变量设置为nil_Session_Heroku_Sinatra_Null_Unset - Fatal编程技术网

Session 希罗库上的西纳特拉:可以';t将会话变量设置为nil

Session 希罗库上的西纳特拉:可以';t将会话变量设置为nil,session,heroku,sinatra,null,unset,Session,Heroku,Sinatra,Null,Unset,我目前正在学习Sinatra,似乎无法将会话变量设置为nil。。。我已经找了好几个小时了,但都没用。奇怪的是,它在我的机器上本地工作,但在Heroku上不工作。简而言之,我的代码如下所示: configure :production do enable :sessions set :session_secret, ENV['SESSION_KEY'] || 'whatever' end post '/send-operation/?' do session[:messa

我目前正在学习Sinatra,似乎无法将会话变量设置为nil。。。我已经找了好几个小时了,但都没用。奇怪的是,它在我的机器上本地工作,但在Heroku上不工作。简而言之,我的代码如下所示:

configure :production do
    enable :sessions
    set :session_secret, ENV['SESSION_KEY'] || 'whatever'
end

post '/send-operation/?' do
    session[:message] = 'Operation completed!'
    redirect '/operation/'
end

get '/operation/?' do
    if(session[:message])
        "The message is: #{session[:message]}."  
        session[:message] = nil
    end 
end
因此,如果我调用“发送操作”路由,它会将我重定向到“操作”路由,并显示会话[:message]变量。如果我刷新“操作”页面,应该不会有任何消息,因为上一条消息已设置为nil。但每次我调用“操作”路线时,它仍然显示“操作已完成!”。我做错什么了吗

谢谢你的阅读

您应该使用会话而不是直接设置状态消息。每次请求后,flash项目将自动删除

在控制器中:

 flash[:error] = <your message>
希望有帮助

编辑:


再看一下

啊,对不起。。。我实际上没有回答这个问题。会话[:message]=nil在输出消息后被调用。所以它从来没有真正达到这个说法。
- if !flash[:error].blank? then 
    %p{ :class => "error" }= flash[:error]              
- if !flash[:notice].blank? then 
    %p{ :class => "notice" }= flash[:notice]