app/helpers/foo.rb のヘルパーは View では使えるようですが、Controller では使えないのでしょうか?
場合によっては、異なるコントローラーが同じメソッドを使用する必要があるかもしれませんが、異なるパラメーターを渡すだけです。その場合、コントローラーでヘルパーを使用する意味はありませんか?
app/helpers/foo.rb のヘルパーは View では使えるようですが、Controller では使えないのでしょうか?
場合によっては、異なるコントローラーが同じメソッドを使用する必要があるかもしれませんが、異なるパラメーターを渡すだけです。その場合、コントローラーでヘルパーを使用する意味はありませんか?
コントローラー間でコードを再利用するには、主に 2 つの方法があります。
共通コードを持つサブクラスを作成しApplicationController
、コードを共有したいコントローラーが新しいコントローラー クラスから継承することができます。ApplicationController
(または、すべてのコントローラーで共有する必要がある場合は、コードをそれ自体に追加します。)
別の方法として、独自のモジュールを作成し (基本的にこれがすべてのヘルパーです)、コードを使用するコントローラーにそれらを含めることもできます。
ヘルパーは単なるモジュールであるため、コントローラーにヘルパーを含めることができますが、ヘルパーはコントローラーよりもビュー レイヤー用であるため、コントローラー間でコードを共有する場所はめったにありません。
上記のように、一般的なヘルパーをApplicationControllerまたはサブクラスに配置できます。これを追加して、ビューでも利用できるようにします。これは、クラスのトップに配置します。
helper_method :foo
理にかなっているかもしれませんが、そのようには機能しません。(やり方を知っている人は、投稿してください)
一般的なヘルパーを に配置ApplicationController
すると、アプリ内の任意のコントローラーからアクセスできるようになります。