2009-06-16 15 views
0

ApplicationHelperは、我々はそれがこのようになります使用しているエンジンである:ApplicationHelperをオーバーライドしますか?

module ApplicationHelper 
    def page_title() 
    # ... 
    end 
end 

これは、エンジン内のビューの数によって呼び出されます。私は別のデフォルトのタイトルを提供するために私のアプリケーションでこのメソッドをオーバーライドしたいと思います。これはどうすればいいですか?単に私自身のApplicationHelperを定義するだけではうまくいきませんでした。

+0

あなたはどこに独自のApplicationHelperを配置しましたか? – mikej

+0

鉱山はapp/helpers /にあります。エンジンのApplicationHelperはベンダー/ {engine}/app/helpers /にあります。 –

答えて

2

ApplicationHelperモジュールでpage_titleメソッドを定義しましたか?それだけでApplicationHelperを持つことはできません。

デフォルトでは、ApplicationHelperモジュールは、すでにapp/helpers/application_helper.rbである必要があります。あなたのアプリケーションファイルは、あなたが使用しているプラ​​グインを必要とした後、レールによって必要とされます。つまり、app/helpers/application_helper.rbで定義するメソッドは、プラグインコードで定義されているメソッドをオーバーライドする必要があります。

この動作は、rubyのオープンクラス構造から発生します。いつでもどこでもクラス/モジュール/オブジェクトを再オープンしてメソッドや属性を追加することができます。多かれ少なかれ。

エンジンメソッドをオーバーライドしようとしているコードの一部を投稿できますか?

1

ApplicationHelperで定義されている他のメソッドはありますか?

yesの場合、EngineHelperがApplicationHelperの前にロードされ、メソッドが上書きされている可能性があります。

の場合、RailsはすでにApplicationHelperについて認識しており、再度ロードしようとしないため、あなたのモジュールをロードしていないことがあります。

関連する問題