为新命名空间呈现类似application.html.erb的布局

时间:2014-03-10 15:02:03

标签: ruby-on-rails ruby-on-rails-4 namespaces

我正在为我的应用构建自定义管理部分,我希望:admin命名空间有自己的布局。

到目前为止,我一直在app / controllers / application_controller.rb中使用它:

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  layout :cond_layout

  def cond_layout
    if controller_path.split("/").first == "admin"
      "panel"
    else
      "application"
    end
  end
end
一位朋友告诉我使用它,但它闻起来很腥。除了Semantic-UI在admin命名空间中停止工作。我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果你有,你可能在admin命名空间中也有一些Admin :: MainController.rb?然后不要犹豫,在那里覆盖布局。 Imho,更干净..

答案 1 :(得分:0)

找一种方法,一种我认为干净的方式。 定义名为foo的新布局。然后像这样的管理员控制器:

class AdminController < ApplicationController
  layout "foo"
  before_action :bar
end

现在,每个继承自AdminController的控制器都会呈现foo布局并执行bar操作。