Rails:如何将flash从一个助手传递到另一个助手

时间:2012-11-19 14:16:48

标签: ruby-on-rails ruby ruby-on-rails-3 rails-flash

嗨我有一个rails helper用于收集引擎X中的flash消息

def flash_messages
  message = []
  flash.each do |k,m|
    message << m
  end
  message
end

现在我已经在我的主app助手

中覆盖了这个功能
include X:Xhelper

def flash_messages
  message = []
  if required_message
    flash.each do |k,m|
      message << m
    end
  else
    message = "Flash messages are not displayed"
  end
  message
end

现在,当我使用它时,我得到错误“未定义的局部变量或方法`flash'for Object:Class”,因为没有为helper定义flash。

由于

1 个答案:

答案 0 :(得分:1)

Rails flash出现在请求的上下文中,并使用部分会话在内部进行管理。因此,引用flash的方法必须在该上下文中,换句话说是控制器。默认情况下,Rails助手只能在视图中使用,而不能在控制器中使用。如果将方法移动到ApplicationController,那么它应该可以访问flash。

这是Rails documentation on flash