Rails: как передать flash от одного помощника другому

Привет у меня есть помощник рельсы для сбора флэш-сообщений в движке X

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

Теперь я переопределил эту функцию в моем главном помощнике приложения

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'для Object:Class", которая возникает из-за того, что flash не определен для помощника.

Спасибо

1 ответ

Решение

Рельсы flash присутствует в контексте запроса и управляется внутри, используя часть сеанса. Таким образом, метод, который ссылается на flash, должен быть в этом контексте, другими словами, контроллером. Помощники Rails по умолчанию доступны только в представлениях, а не в контроллерах. Если вы переместите свой метод в ApplicationController, то он должен иметь доступ к флэш-памяти.

Вот документация по Railsflash

Другие вопросы по тегам