0

X と Y の 2 つのコントローラーがあります。

X には、プライベート メソッド foo 用の :before_filter があります。

また、コントローラー X の上部に次のステートメントがあります。

helper_method :foo

コントローラ Y には、プライベート メソッド bar の :before_filter があります。bar では foo と呼びます。しかし、未定義のローカル変数またはメソッド エラーが発生するため、明らかにこれは許可されていません。私の :helper_method 宣言では、他のコントローラーで foo を使用できるようにする必要があると思います。

一般的に言えば、コントローラー Y で foo を呼び出すにはどうすればよいですか? foo を非公開のままにしておく方法はありますか? そうでない場合、 foo がプライベートでない場合、(優れた設計原則を順守しながら) どのように達成されますか?

ありがとう!

4

1 に答える 1

1

複数のコントローラーが必要な場合はfoo、保護された方法としてベースアプリケーションコントローラーに配置する必要があります。これにより、パブリックインターフェイスから外したまま、必要な場所にアクセスできるようになります。

または、fooモジュールを挿入して、必要に応じて含めることもできます。

どのアプローチを取るかは、特定の状況によって異なります。

于 2011-06-02T03:21:28.117 に答える