1

私は、管理サイトを継承した会社で働いています。私の前の人はビュー ヘルパーをあまり使用していなかったので、これらのヘルパーのコードの 95% は私のものです。

彼が application_controller に helper :all 行を持っていたという問題が発生しました。これは、すべてのヘルパーがすべてのビューで利用できることを意味します。2 つの異なるヘルパーで同じ名前のメソッドを作成し、もちろん正しいものではなく最後のメソッドを使用したため、ちょっとしたことになりました。私がいたコントローラとは何の関係もないビューヘルパーがどのようにロードされ、間違ったメソッドが選択されているのか疑問に思いました。

私の質問は、これをアプリケーション コントローラーに残すのは良い考えですか? 標準は、その特定のビューのコントローラーのビューヘルパーのみを含めることだと思います。したがって、foo コントローラーと foo ビューがある場合は、foo_helper のみを含める必要があります。foo2_helper と foo3_helper ではありません。(コントローラーに「ヘルパー foo2」または「ヘルパー foo3」を入れることができる foo2_helper または foo3_helper が必要かどうかはわかっていますが、それは選択によるものであり、自動ではありません。)

これが良いアイデアかどうかの答えが見つからないようです。これがデフォルトだと言っているサイトを見つけました。

ありがとう

4

3 に答える 3

2

の IMO ヘルパーは、アプリケーション全体で共有することをApplicationController特に意図しています (大声で言うと、それは明らかだと思います)。

単一のコントローラーのビューでのみ使用されるヘルパーは、その単一のコントローラーに属します。

アプリケーション コントローラーに非グローバル ヘルパーがある場合、それらは間違った場所にある可能性があります。

于 2011-09-09T17:03:32.613 に答える
0

はい。DRYといいます。Rails プロジェクトのすべての場所ですべてのコードを配置して使用する必要があるという意味ではありませんapplication_helper.rbが、役立つ場合もあります。

于 2012-01-12T15:28:32.827 に答える
0

helper :allコントローラーに依存するのではなく、ヘルパーを使用する目的に応じてヘルパーを注文するため、ApplicationControllerに保持します。

そうすれば、2 つの異なるコントローラーで同じヘルパーを再利用できます。

于 2011-09-09T17:00:42.320 に答える