Rails flash.now在after_action中

时间:2014-02-17 19:55:29

标签: ruby-on-rails ruby ruby-on-rails-4

关于这个的代码不言自明。

这有效......

class SomeController < ApplicationController

  def index
    flash.now[:alert] = 'Something got borked!'
  end

end

这不是(flash为空)...

class SomeController < ApplicationController

  after_action :test_flash

  def index
  end

  def test_flash
    flash.now[:alert] = 'Something got borked!'
  end

end

使用Rails 4.0.2,Ruby 2.1.0

有人想到吗?

1 个答案:

答案 0 :(得分:2)

index操作栏的末尾,只需呈现new页面,因为您没有指定任何不同的内容。 在呈现索引页面之后执行after_action,即,它添加了一个回调,该回调将在索引操作的执行完成后被调用。因此,test_flash没有效果,因为它太晚了,索引页面已经呈现。

编辑:

如果要在渲染之前调用test_flash,则可以覆盖render方法并执行以下操作:

  def render *args
    test_flash
    super
  end