-1

こんにちは私はエンジンXでフラッシュメッセージを収集するためのRailsヘルパーを持っています

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'」というエラーが発生します。これは、フラッシュがヘルパー用に定義されていないために発生します。

ありがとう

4

1 に答える 1

2

Railsflashはリクエストのコンテキストに存在し、セッションの一部を使用して内部的に管理されます。したがって、フラッシュを参照するメソッドは、そのコンテキスト、つまりコントローラーである必要があります。Railsヘルパーは、デフォルトでは、コントローラーではなく、ビューでのみ使用できます。メソッドをApplicationControllerに移動すると、フラッシュにアクセスできるようになります。

これがRailsのドキュメントですflash

于 2012-11-19T19:08:28.607 に答える