6

私は数日間スコープに苦労しました。すべてのビューとコントローラーで使用できる少数のメソッドが必要です。コードは次のとおりです。

def login_role
  if current_user
    return current_user.role
  end
  return nil
end

これを application_helper.rb に含めると、すべてのビューでのみ使用できますが、すべてのコントローラーで使用できるわけではありません

これを application_controller.rb に含めると、すべてのコントローラーで使用できますが、すべてのビューで使用できるわけではありません。

4

2 に答える 2

30

helper_methodのメソッドを使用ApplicationControllerして、ビューへのアクセスを許可します。

class ApplicationController < ActionController::Base

  helper_method :login_role

  def login_role
    current_user ? current_user.role : nil
  end

end

関連するすべてのメソッドを独自のモジュールに配置することを検討してから、次のようにすべてを利用可能にすることができます。

helper LoginMethods

于 2012-07-02T13:50:01.903 に答える
-4

独自のライブラリ (クラス、モジュール、メソッドを含めることができます) を作成し、lib ディレクトリに配置します。これを my_lib.rb としましょう。

application_controller.rb と application_helper.rb に次の行を追加します。

require 'my_lib'

これにより、すべてのクラス、モジュール、メソッドがすべてのビューとコントローラーで利用できるようになります

于 2012-07-02T13:43:53.497 に答える