为命名空间内的视图提供默认布局

时间:2011-11-10 13:12:55

标签: ruby-on-rails

我的应用程序中有一系列控制器和相关视图,存在于Admin命名空间内。我希望这些视图使用与主命名空间中不同的布局,以便我可以为常规站点提供不同的外观。有没有办法使用Rails的内置功能来做到这一点?我知道如果我有一个PostController类并在layouts目录中创建一个posts.html.erb视图,这将被用作任何控制器视图的布局,我是否可以为命名空间控制器做类似的事情?

4 个答案:

答案 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方法

覆盖任何控制器的默认布局