3

app/helpers/foo.rb のヘルパーは View では使えるようですが、Controller では使えないのでしょうか?

場合によっては、異なるコントローラーが同じメソッドを使用する必要があるかもしれませんが、異なるパラメーターを渡すだけです。その場合、コントローラーでヘルパーを使用する意味はありませんか?

4

3 に答える 3

3

コントローラー間でコードを再利用するには、主に 2 つの方法があります。

共通コードを持つサブクラスを作成しApplicationController、コードを共有したいコントローラーが新しいコントローラー クラスから継承することができます。ApplicationController(または、すべてのコントローラーで共有する必要がある場合は、コードをそれ自体に追加します。)

別の方法として、独自のモジュールを作成し (基本的にこれがすべてのヘルパーです)、コードを使用するコントローラーにそれらを含めることもできます。

ヘルパーは単なるモジュールであるため、コントローラーにヘルパーを含めることができますが、ヘルパーはコントローラーよりもビュー レイヤー用であるため、コントローラー間でコードを共有する場所はめったにありません。

于 2010-09-15T21:26:44.503 に答える
1

上記のように、一般的なヘルパーをApplicationControllerまたはサブクラスに配置できます。これを追加して、ビューでも利用できるようにします。これは、クラスのトップに配置します。

helper_method :foo
于 2010-09-15T21:40:35.250 に答える
1

理にかなっているかもしれませんが、そのようには機能しません。(やり方を知っている人は、投稿してください)

一般的なヘルパーを に配置ApplicationControllerすると、アプリ内の任意のコントローラーからアクセスできるようになります。

于 2010-09-15T21:23:32.583 に答える