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

rpo*_*ell 14 ruby-on-rails

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

spa*_*ovv 27

为您要继承的管理员控制器创建自定义AdminController类.此AdminController继承自ApplicationController并覆盖布局.

class AdminController < ApplicationController   
  layout "admin" 
end

class Admin::PostController < AdminController 
end
Run Code Online (Sandbox Code Playgroud)


Ale*_*lim 6

layout方法不需要.您应该将命名空间的布局文件放入views/layouts/<namespace>.

名称为' foo'的名称空间示例:

控制器: app/controllers/foo/bar_controller.rb

该控制器的布局: app/views/layouts/foo/bar.html.erb

  • 这意味着您必须为每个命名空间视图创建布局 (3认同)

Adi*_*ghi 5

我相信你会在Ryan Bates的精美截屏视频中得到你问题的确切答案.

http://railscasts.com/episodes/269-template-inheritance

(即如果您使用的是Rails 3.1)