モデルにクラスメソッドがあり、ビューヘルパーの1つからメソッドにアクセスする必要があります。現在、を含めinclude TalkHelper
ていますが、それでもNoMethodErrorが発生します。
17401 次
3 に答える
42
モデルでは、次のようなことができます。
ApplicationController.helpers.your_helper_method
また
YourController.helpers.your_helper_method
最善の解決策は、モデルからビューヘルパーコードをまったく呼び出さなくても済むように、コードをリファクタリングすることです。それはRoRの方法ではありません。他の人が指摘しているように、ヘルパーコードをlibフォルダーに抽出できます。
詳細については、こちらをご覧ください。
于 2011-09-19T00:29:51.077 に答える
9
libフォルダーにヘルパーを配置し、そこに含めることができます。このように:lib / some_helper.rb
module SomeHelper
def somedef
#your code there
end
end
于 2011-09-18T23:40:01.133 に答える
6
クラスメソッドでヘルパーが必要な場合は、それではなくextend
、必要になりinclude
ます。
module TalkHelper
def woo; 'hoo' end
end
class MyClass
extend TalkHelper
def self.boo; woo end
end
MyClass.boo #=> 'hoo'
ヘルパーはリクエストのコンテキストに依存する可能性があるため、ビューコンテキスト外のヘルパーには注意しcontroller
てください。これは、モデルでは使用できません。
于 2011-09-19T00:05:48.853 に答える