2

根据Rails Guide 的官方 flash 部分

闪光

flash 是会话的一个特殊部分,每次请求都会清除它。这意味着存储在那里的值将仅在下一个请求中可用,这对于传递错误消息等很有用。

...

flash.now

默认情况下,将值添加到闪存将使它们可用于下一个请求,但有时您可能希望在同一个请求中访问这些值。

但是,在做了一些测试之后,我发现它flash在当前和下一个请求中可用。并且flash.now当前请求中可用。

Rails 指南不正确吗?或者,也许我错过了什么?

# Controller action
def test_flash
  flash[:notice] = "This is a flash msg."
end

# test_flash.html.erb
<% flash.each do |name, msg| -%>
  <%= content_tag :div, msg, class: name %>
<% end -%>
4

2 回答 2

4

我不会说文件不正确,但我同意它可能会更清楚。应该这样表述:

Flash 在下一个请求后清除,因此在当前请求和下一个请求中都可用。如果您只希望它在当前请求中可用,而不是与下一个请求一起使用,请使用flash.now.

另一方面,你不认为当前请求中没有某些东西,给定当前的闪存 API,作为一个类似哈希的对象,这会很奇怪吗?例如:

flash[:notice] = 'nnf'
puts flash[:notice] # => nil

write如果是这样的话,它会更有意义read

于 2015-01-29T08:38:31.943 回答
1

你读错了。flash.now仅适用于当前请求。flash(没有现在)是唯一可用于下一个请求的请求。

您在上面读到的句子 - 实际上是在谈论简单flash(开始),然后才flash.now在段落末尾作为对比引入。

于 2015-01-29T04:45:46.957 回答