【问题标题】:Rails Flash doesn't behave as what the Rails Guide saysRails Flash 的行为不像 Rails 指南所说的那样
【发布时间】:2015-03-28 05:31:14
【问题描述】:

据官方flash section on Rails Guide

闪电侠

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 -%>

【问题讨论】:

    标签: ruby-on-rails rails-flash


    【解决方案1】:

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

    你上面读到的那句话——实际上是在谈论简单的flash(开头),然后才在段落末尾引入flash.now作为对比。

    【讨论】:

      【解决方案2】:

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

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

      另一方面,您不认为当前的某些东西是不可用的吗? 请求,给定当前的 Flash API,作为一个像哈希一样的对象,它会很 诡异的?例如:

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

      如果是这样的话,writeread 会更有意义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-30
        相关资源
        最近更新 更多