私はadminの名前空間の下で多数のコントローラ&ビューを作成しましたが、まだアプリケーションのレイアウトから抜け出しています。名前空間のルート内のすべてのビューに適用されるレイアウトを作成するにはどうしたらいいですか?rails 3:名前空間を使ったルートのレイアウト
答えて
一般的に言えば、Railsはコントローラと一致するレイアウトがない場合、アプリケーションレイアウトを使用します。たとえば、PeopleControllerがある場合、Railsはlayouts/people.html.erbを探し、見つからなければapplication.html.erbを探します。
この規則を無効にする場合は、特定のレイアウトを明示的に指定することができます。コントローラは、その後、むしろpeople.html.erbとapplication.html.erbを探して比べてsome_layout.html.erbを使用します
class Admin::PeopleController
layout 'some_layout'
end
。
しかし、あなたはグループ物事に探しているなら、これは良い方法かもしれません:あなたはApplicationControllerにから継承ベースAdminControllerを持っている場合、あなたは、たとえば、管理者を持つことができます:: PersonControllerがAdminControllerから継承し、それ管理者のレイアウトを継承します。
私はあなたのコードの詳細を知りませんが、あなたは可能性があります:
class AdminController
def show
#render a template linking to all the admin stuff
end
end
app/controllers/admin/people_controller.rb:
class Admin::PeopleController < AdminController
#your awesome restful actions in here!
end
views/layouts/admin.html.erb:
Hello from the Admin!
<%= yield %>
実現する一つのことは、管理:: PeopleControllerがAdminControllerは何でもと(定義された任意のアクションを継承するということですApplicationControllerで定義されているすべてのサブクラスで使用可能になります)。とにかくメソッドを上書きする可能性があるので、これは一般的に問題ではありませんが、それを認識するだけです。 AdminControllerを持っていない場合は、レイアウト目的のためだけにアクションを行わないでください。
私は通常、自分のネームスペースにBaseコントローラクラスを持ち、そのネームスペース内のすべてのコントローラを継承します。これにより、共通の名前空間固有のコードをBaseに入れ、その名前空間内のすべてのコントローラを利用することができます。例:
class Admin::BaseController < ApplicationController
layout 'admin'
before_filter :require_admin_user
end
class Admin::WidgetsController < Admin::BaseController
# inherits the 'admin' layout and requires an admin user
end
私はこれが受け入れられた答えよりもエレガントで構造化されていると思います。 'rails g'コマンドで生成されたすべてのコントローラを' Admin :: BaseController'から継承させる方法はありますか? – berezovskyi
このベースコントローラはどこに行きますか? – Sebastialonso
コントローラクラスはAdmin :: BaseControllerです。したがって、Railsはcontrollers/adminフォルダ内のbase_controller.rbファイルで定義されているものと見なします。 – IAmNaN
- 1. の名前空間Railsのルートの間違った名前のヘルパーは
- 2. Railsの3ルーティングエラー(名前空間のルートのヘルプ)
- 3. ネストされた名前空間のルート
- 4. PHPのルート名前空間
- 5. 名前空間とネストされたルートを使用したRailsルーティング
- 6. Railsの名前空間のルート - WindowsはLinuxの
- 7. Rails - 設定/ルート内の名前空間の設定?
- 8. Rails 3名前付きルートのオーバーライド
- 9. Ruby On Rails - 名前空間
- 10. 名前空間ApplicationController in Rails
- 11. Rails 5 - 名前空間モデル
- 12. Rails - 名前空間コントローラを使ってファイルを整理する
- 13. Flex 3&XML名前空間
- 14. 特定の名前空間ルートは
- 15. Linq Xmlを使った空の名前空間
- 16. Rails-3の名前空間コントローラでエラーが発生する
- 17. Rails 3.1に名前空間を含める名前空間アプリケーションのHAMLビュー
- 18. Rails 3 AJAX:間違った定数名
- 19. 間違った名前空間を使用するコード
- 20. Rails 5 - 名前空間を持つフォルダ
- 21. Railsアプリケーションの名前空間モデル
- 22. ロードされたアセンブリのルート名前空間(アセンブリ名前空間)を取得します
- 23. Railsコントローラ名前空間/モジュール構成
- 24. Ember-Railsと名前空間テンプレート
- 25. Rails 5 - シンプルフォーム - 名前空間リソース
- 26. Railsルートの名前とリソース
- 27. Javascriptを使った名前空間の厳密なモード
- 28. xslt2.0を使った名前空間の追加
- 29. レール3名前空間リソースルーティング例外
- 30. Visual Studioコードsymfony 3名前空間autosuggestions
'class AdminController'は' app/controllers'または 'app/controllers/admin'にありますか? – jdscosta91
'app/controllers'の下で – Damien
私はこれを試していますが、うまくいくようですが、BootstrapやSemantic-UIのようなフレームワークで与えられたスタイルと機能を失います。どのようにこれを解決するための任意のアイデア? – Sebastialonso