我的应用程序中有一系列控制器和相关视图,存在于Admin
命名空间内。我希望这些视图使用与主命名空间中不同的布局,以便我可以为常规站点提供不同的外观。有没有办法使用Rails的内置功能来做到这一点?我知道如果我有一个PostController
类并在layouts目录中创建一个posts.html.erb
视图,这将被用作任何控制器视图的布局,我是否可以为命名空间控制器做类似的事情?
答案 0 :(得分:27)
为您要继承的管理员控制器创建自定义AdminController类。此AdminController继承自ApplicationController并覆盖布局。
class AdminController < ApplicationController
layout "admin"
end
class Admin::PostController < AdminController
end
答案 1 :(得分:6)
layout
方法不需要。您应该将名称空间的布局文件放入views/layouts/<namespace>
。
名称为“foo
”的示例命名空间:
控制器:app/controllers/foo/bar_controller.rb
此控制器的布局:app/views/layouts/foo/bar.html.erb
答案 2 :(得分:5)
我相信你会在Ryan Bates这个漂亮的截屏视频中得到你问题的确切答案。
http://railscasts.com/episodes/269-template-inheritance
(即如果您使用的是Rails 3.1)
答案 3 :(得分:0)
您可以使用layout方法
覆盖任何控制器的默认布局