3

パーシャル、レイアウト、およびテンプレートを含むビューを、異なる名前空間のコントローラー間で共有したいと考えています。

問題

自分の意見を入れるのではなく

app/views/#{namespace}/#{controller}/...
app/views/layouts/#{namespace}/...

自分の意見を取り入れたい

app/views/#{controller}/... 
app/views/layouts/... # as normal, without namespaces

これも任意でお願いしたいです。たとえば、レイアウトがある場合はapp/views/layouts/#{namespace}/...それを使用し、そうでない場合app/views/layouts/...は通常どおり使用します。

私が試したいくつかのこと:

  1. ビューパスが何であれ、テンプレートを検索するprepend_view_pathため、ここでは次のようなものを使用することはできません。admin/courses#indexadmin/courses/index

  2. メソッドを使用するとうまくいくlayoutかもしれませんが、おそらくテンプレートとパーシャルにはうまくいきません。

  3. render メソッドをオーバーライドしようとしましたが、これは少しハッキーなようです。ApplicationControllerビュー内からのパーシャルのレンダリングを処理しないためです。したがって、クラスで render メソッドを再度オーバーライドする必要がありますがApplicationHelper、これは扱いにくく、DRY ではなく、それほど単純ではありません。

前もって感謝します!

4

1 に答える 1

1

レールが大好きです。それは自動的にそれを行います。

ベースコントローラーから拡張されたコントローラー、つまり拡張されたコントローラーがAdmin::CoursesControllerありましたBaseCoursesController

だから私は自分の意見を入れる必要がありました

app/views/base_courses/index...

そして、オプションで自分の意見を入れることもできます

app/views/admin/courses/index...

ほら!

于 2013-02-27T01:33:52.413 に答える