その他
    ホーム技術発信DoRubyflashのメッセージ以外の使い道

    flashのメッセージ以外の使い道

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    社会人2年目になった、まだまだ技術的に新人域を抜けきっていない気がする中西です。

    今回は、flashが使えるのは、メッセージだけでないことについて紹介します。

    環境

    Rails 4.1.4

    Ruby 2.1.2

    flashに渡せる値

    flashトとは、セッションに一時的にメッセージを入れておける機能です。

    エラー等のメッセージを値として渡し、リダイレクト先でそのメッセージを表示する使い方が多いと思います。

    test_controller.rb
    flash[:notice] = "テストメッセージです。"
    flash[:error] = "エラーが発生しました。"
    redirect_to test_path
    
    test/show.html.slim
    = flash[:notice]
    = flash[:error]
    

    しかし、flashの実態はHashです。

    そのため、そのため、任意のキーを使用することができます。

    したがって、メッセージの他に、独自に設定したキーで、名前やフラグを値として渡すこともできます。

     名前の例

    test_controller.rb
    flash[:test_name] = "welcome"
    redirect_to test_path
    
    test/show.html.slim
    - if flash[:test_name]
      = link_to "#{flash[:test_name]}", "http://www.test.#{flash[:test_name]}"
    

     flagの例

    test_controller.rb
    flash[:test_view_flag] = true
    redirect_to test_path
    
    test/show.html.slim
    - if flash[:test_view_flag]
      | テスト経由
    

    まとめ

    flashを一時的なsessionとしてうまく使うと、様々なことができそうです。

    参照

    http://guides.rubyonrails.org/action_controller_overview.html#the-flash

    http://thepugautomatic.com/2012/08/the-rails-flash/