Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 flash:error,:重定向时通知丢失,但警报未丢失_Ruby On Rails_Flash_Redirect - Fatal编程技术网

Ruby on rails Rails flash:error,:重定向时通知丢失,但警报未丢失

Ruby on rails Rails flash:error,:重定向时通知丢失,但警报未丢失,ruby-on-rails,flash,redirect,Ruby On Rails,Flash,Redirect,用于的文档明确指出,重定向到可以在路径后使用:alert=>“x”和:notice=>“x”选项,但其他任何选项都需要进入“通用闪存桶” 在我的应用程序中,我们经常使用flash[:error],所以我尝试这样做 重定向到根路径,:flash=>{:error=>“x”} 但是错误不会显示在重定向页面上 我在没有重定向的情况下进行了测试,即在正常渲染中,flash[:error]=“x”成功显示消息“x”,因此在视图中这显然不是问题,但下面是相关代码: - flash.each do |name

用于的文档明确指出,
重定向到
可以在路径后使用
:alert=>“x”
:notice=>“x”
选项,但其他任何选项都需要进入“通用闪存桶”

在我的应用程序中,我们经常使用flash[:error],所以我尝试这样做

重定向到根路径,:flash=>{:error=>“x”}

但是错误不会显示在重定向页面上

我在没有重定向的情况下进行了测试,即在正常渲染中,
flash[:error]=“x”
成功显示消息“x”,因此在视图中这显然不是问题,但下面是相关代码:

- flash.each do |name, msg|
  = content_tag :div, msg, :id => "flash_#{name}"
我也尝试过flash.keep重定向,但flash bucket总是丢失

此外,这个错误最近才出现,所以它似乎可能与一些gem的升级有关——不过rails版本没有改变。我使用的是Rails 4.1.6

另外-我刚刚意识到:注意被过滤掉的方式与错误相似,我不得不检查我的代码,并用:success替换注意-非常困惑,我检查了actionpack的gem版本,其中Flash被编码,它与这一切正常工作时的情况相同

bundle exec bundle show actionpack
.....shared/bundle/ruby/2.3.0/gems/actionpack-4.1.6
你试过下面的吗

重定向到(根路径,{:flash=>{:error=>“x”})

您在下面尝试过吗

重定向到(根路径,{:flash=>{:error=>“x”})

实际上与

redirect_to(whiteboards_path, flash: {warning: "x"} )
但不是用

redirect_to(whiteboards_path, flash: {error: "x"} )
似乎在重定向中,flash发生了一些事情来删除错误键和值,这是最近才引入的,或者是一些gem,或者是我们的代码

我也试过了

flash[:error] = "x"
redirect_to some_path and return
它不起作用,但是

flash[:error] = "x"
render some_template
工作正常,即未删除错误键和值

因此,对于我自己的问题,这是一个糟糕的答案,但如果没有人想出更好的答案,我会接受:

重定向时使用
alert:“x”
而不是
flash:{:error=>“x”}
,因为有东西删除了flash bucket中的错误键val

redirect_to(whiteboards_path, flash: {warning: "x"} )
但不是用

redirect_to(whiteboards_path, flash: {error: "x"} )
似乎在重定向中,flash发生了一些事情来删除错误键和值,这是最近才引入的,或者是一些gem,或者是我们的代码

我也试过了

flash[:error] = "x"
redirect_to some_path and return
它不起作用,但是

flash[:error] = "x"
render some_template
工作正常,即未删除错误键和值

因此,对于我自己的问题,这是一个糟糕的答案,但如果没有人想出更好的答案,我会接受:

重定向时使用
alert:“x”
而不是
flash:{:error=>“x”}
,因为有东西删除了flash bucket中的错误键val

摘自“Rails 4路”

Rails 4的新增功能是使用新的ActionController::flash.add_flash_types宏样式方法注册您自己的flash类型

类应用程序控制器
...
添加\u闪存\u类型:错误
结束
注册闪存类型后,一个类似于alert和notice的特殊闪存访问器可用于重定向到

重定向到post\u url(@post),错误:“出了点问题!
摘自《Rails 4路》

Rails 4的新增功能是使用新的ActionController::flash.add_flash_types宏样式方法注册您自己的flash类型

类应用程序控制器
...
添加\u闪存\u类型:错误
结束
注册闪存类型后,一个类似于alert和notice的特殊闪存访问器可用于重定向到

重定向到post\u url(@post),错误:“出了点问题!

很有趣,谢谢,除了:error!!我用
重定向到白板路径进行测试,dizzy:'dizzy',success:'success',warning:'warning',error:'error'并返回
,在我的
应用程序控制器
中添加flash类型:dizzy,:success,:warning,:error
,因此还不能给出可接受的答案。很有趣,谢谢,除了“错误”之外,它在任何情况下都能正常工作!!我用
重定向到白板路径进行测试,dizzy:'dizzy',success:'success',warning:'warning',error:'error'并返回
,在我的
应用程序控制器
中添加flash类型:dizzy,:success,:warning,:error,因此还不能给出可接受的答案。