加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用sinatra在块之间传递数据

发布时间:2020-12-16 23:05:26 所属栏目:百科 来源:网络整理
导读:我正在尝试使用sinatra在块之间传递数据.例如: @data = Hash.newpost "/" do @data[:test] = params.fetch("test").to_s redirect "/tmp"endget "/tmp" do puts @data[:test]end 但是,无论何时我到达tmp块,@data都是nil并且抛出一个错误.这是为什么? 解决
我正在尝试使用sinatra在块之间传递数据.例如:
@data = Hash.new
post "/" do
   @data[:test] = params.fetch("test").to_s
   redirect "/tmp"
end

get "/tmp" do
   puts @data[:test]
end

但是,无论何时我到达tmp块,@data都是nil并且抛出一个错误.这是为什么?

解决方法

原因是因为浏览器实际上执行了两个单独的HTTP请求.
Request: POST /
Response: 301 -> Location: /tmp
Request: GET /tmp
Response: ...

两个请求意味着两个单独的进程,因此@data实例变量在发送第一个响应后被清除.
如果要保留信息,则需要使用cookies或会话,否则将querystring中的数据传递

post "/" do
   test = params[:test]
   redirect "/tmp?test=#{test}"
end

get "/tmp" do
   puts params[:test]
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读