私は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の3ルーティングエラー(名前空間のルートのヘルプ)
- 2. ネストされた名前空間のルート
- 3. PHPのルート名前空間
- 4. Railsの名前空間のルート - WindowsはLinuxの
- 5. Rails - 設定/ルート内の名前空間の設定?
- 6. Rails 3名前付きルートのオーバーライド
- 7. Flex 3&XML名前空間
- 8. 名前空間ApplicationController in Rails
- 9. Ruby On Rails - 名前空間
- 10. Linq Xmlを使った空の名前空間
- 11. Rails-3の名前空間コントローラでエラーが発生する
- 12. Rails 3.1に名前空間を含める名前空間アプリケーションのHAMLビュー
- 13. Rails 3 AJAX:間違った定数名
- 14. Railsアプリケーションの名前空間モデル
- 15. レール3名前空間リソースルーティング例外
- 16. Javascriptを使った名前空間の厳密なモード
- 17. Railsルートの名前とリソース
- 18. Ember-Railsと名前空間テンプレート
- 19. Railsルート:入れ子、メンバー、コレクション、名前空間、スコープおよびカスタマイズ可能
- 20. 名前空間
- 21. ルート上のレール名前空間を乾燥させる
- 22. Rails 3:名前付きパラメータのルートbreak link_to
- 23. 名前空間によるリソース削除のためのRailsルーティング
- 24. 名前空間のリファクタリング後の2つのルートMVC WebAPI
- 25. Railsのルーティング:スコープにネスト名前空間は、Railsの3.2
- 26. 名前空間なしのGroovy XMLSlurper名前空間エラー
- 27. ルート要素に名前空間を持つXSLT
- 28. イニシャライザリストの名前空間を使用
- 29. 素早いコアデータ間違った名前空間ManagedObject onユニットテスト
- 30. html:FBML名前空間
'class AdminController'は' app/controllers'または 'app/controllers/admin'にありますか? – jdscosta91
'app/controllers'の下で – Damien
私はこれを試していますが、うまくいくようですが、BootstrapやSemantic-UIのようなフレームワークで与えられたスタイルと機能を失います。どのようにこれを解決するための任意のアイデア? – Sebastialonso