奇妙なことに、次のlib/
ような認証モジュールがあります。
module Authentication
protected
def current_user
User.find(1)
end
end
ApplicationController には、このモジュールとすべてのヘルパーを含めていますが、メソッド current_user はコントローラーで使用できますが、ビューからは使用できません :( どうすればこれを機能させることができますか?
奇妙なことに、次のlib/
ような認証モジュールがあります。
module Authentication
protected
def current_user
User.find(1)
end
end
ApplicationController には、このモジュールとすべてのヘルパーを含めていますが、メソッド current_user はコントローラーで使用できますが、ビューからは使用できません :( どうすればこれを機能させることができますか?
メソッドがコントローラーで直接定義されている場合は、 を呼び出してビューで使用できるようにする必要がありますhelper_method :method_name
。
class ApplicationController < ActionController::Base
def current_user
# ...
end
helper_method :current_user
end
モジュールでも同じことができますが、少しトリッキーです。
module Authentication
def current_user
# ...
end
def self.included m
return unless m < ActionController::Base
m.helper_method :current_user # , :any_other_helper_methods
end
end
class ApplicationController < ActionController::Base
include Authentication
end
ああ、はい、あなたのモジュールが厳密にヘルパーモジュールであることを意図しているなら、Lichtamberg が言ったようにすることができます。ただし、名前を付けてフォルダーAuthenticationHelper
に入れることもできます。app/helpers
ただし、認証コードに関する私自身の経験では、コントローラーとビューの両方で使用できるようにする必要があります。通常、コントローラーで承認を処理するためです。ヘルパーは、ビューでのみ使用できます。(元々は、複雑な html 構造の短縮形として意図されていたと思います。)
で宣言しましたか
helper :foo # => requires 'foo_helper' and includes FooHelper
helper 'resources/foo' # => requires 'resources/foo_helper' and includes Resources::FooHelper
あなたのApplicationControllerで?
http://railsapi.com/doc/rails-v2.3.3.1/classes/ActionController/Helpers/ClassMethods.html#M001904