Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Ruby on rails 请求之间不更新Rails 4会话_Ruby On Rails_Flash_Session_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 请求之间不更新Rails 4会话

Ruby on rails 请求之间不更新Rails 4会话,ruby-on-rails,flash,session,ruby-on-rails-4,Ruby On Rails,Flash,Session,Ruby On Rails 4,假设我们有一个非常简单的控制器的显示动作: def show session[:shown_counter] ||= 0 session[:shown_counter] += 1 puts "session id: #{session.id}" puts "shown #{session[:shown_counter]} times" end 当我从我的浏览器(chrome)点击调用此操作的url时,它会按预期工作,我看到显示的\u计数器增量。但是我有一个flash,它向正确的

假设我们有一个非常简单的控制器的显示动作:

def show
  session[:shown_counter] ||= 0
  session[:shown_counter] += 1
  puts "session id: #{session.id}"
  puts "shown #{session[:shown_counter]} times"
end
当我从我的浏览器(chrome)点击调用此操作的url时,它会按预期工作,我看到
显示的\u计数器
增量。但是我有一个flash,它向正确的URL发出一些(5-10)请求,调用我的show操作,但是我可以看到计数器没有增加,尽管会话id总是相同的

当我重新加载闪存时,我会看到计数器增加了1,但会被“卡住”,直到我再次刷新闪存或发出“常规”请求(使用浏览器)


它是如何工作的?为什么计数器不会随着flash请求而增长?

我认为您的flash应用程序需要在
Set cookie
标头中获取Rails应用程序服务器提供的会话cookie,存储提供的数据,并在下一次请求时将此键值对作为
cookie
标头传递

(换句话说,保存每个响应的
\u myapp\u session=Xyz(等)
部分,并在每个后续请求中将其作为
Cookie
传递。)


否则,Rails将不知道您的请求属于哪个会话。

与flash创建者交谈后,我想我得到了答案

请求是异步的,这意味着请求不会等待响应=>cookie不会被更新=>会话(使用cookie存储)也不会被更新


我猜情况就是这样,请告诉我这是否对您有意义,您是否同意/不同意。

flash是如何工作的?你能解释一下吗。您也看到了吗?我认为情况并非如此,因为我为每个flash请求获得相同的会话ID(正如我在原始问题中所述),这意味着Rails确切地知道请求属于哪个会话。