logo
Published on

Rails 5でコントローラーで共通の変数を定義するには

Authors

Rails 5でコントローラーで共通の変数を定義する方法に関するメモです。

Railsアプリケーションでコントローラー全体やアプリ全体で共通の変数を定義する方法はいくつかあります。 以下にそれらの方法と関連情報をまとめました。

  1. ApplicationControllerに定義する方法:

    class ApplicationController < ActionController::Base
      HASH_DATA = { value: "key" }
    end
    

    この方法は、すべてのコントローラーとアクションで利用可能な定数を定義します。定数として定義されたHASH_DATAはアプリケーション全体で共有されます。

  2. コントローラー内でbefore_actionを使用する方法:

    class SomeController < ApplicationController
      before_action :set_admin
    
      def set_admin
        @listOfWords = ['a', 'b', 'c']
      end
    end
    

    この方法では、before_actionを使用して特定のコントローラー内で共通の変数(この場合は@listOfWords)を定義します。この変数はコントローラー内のすべてのアクションからアクセスできます。

  3. ApplicationControllerにメソッドを定義する方法:

    class ApplicationController < ActionController::Base
      def common_variable
        @listOfWords = ['a', 'b', 'c']
      end
    end
    

    この方法では、ApplicationControllerにメソッドを追加し、コントローラー内でそのメソッドを呼び出すことで共通の変数を設定できます。これは変数を定義するための柔軟な方法で、common_variableメソッドを必要なコントローラーで呼び出すことができます。

上記の方法の選択肢は、アプリケーションの要件に合わせて柔軟に選択できます。変数はインスタンス変数(@variable)として定義する必要があります。このような変数は、ビューでアクセスできるため、コントローラーからビューにデータを渡すのに便利です。