ruby-on-rails - rails 3:命名空间路由的布局

标签 ruby-on-rails layout

我已经在“admin” namespace 下创建了许多 Controller 和 View ,但是它们仍在从应用程序布局中提取。如何制作适用于命名空间路由中所有 View 的布局,而仍将当前布局用于其他页面?

最佳答案

一般来说,如果没有与 Controller 匹配的布局,Rails将使用应用程序布局。例如,如果您有一个PeopleController,Rails会查找layouts / people.html.erb,如果找不到,则为application.html.erb。

如果要覆盖此约定,则可以显式指定特定的布局。

class Admin::PeopleController
  layout 'some_layout'
end

然后,该 Controller 将使用some_layout.html.erb而不是寻找people.html.erb和application.html.erb。

,但是,如果您希望对事物进行分组,这可能是一个更好的方法:如果您具有从ApplicationController继承的基本AdminController,则可以从AdminController继承Admin::PersonController,它将继承admin布局。

我不知道您的代码的细节,但是您可能有:
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 %>

要实现的一件事是Admin::PeopleController将继承AdminController定义的任何操作(就像ApplicationController中定义的所有内容在所有子类中都可用一样)。通常这不是问题,因为无论如何您都可能会覆盖这些方法,而只是要注意它。如果没有AdminController,则仅出于布局目的就可以执行任何操作而无需执行任何操作。

关于ruby-on-rails - rails 3:命名空间路由的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221856/

相关文章:

ruby-on-rails - 是否有 View 页面中使用的所有 RoR 助手的列表?

android - 在 TYPE_SYSTEM_ALERT AND TYPE_SYSTEM_OVERLAY 之间切换,并捕获无法正常工作的触摸事件

ruby-on-rails - 如何使用 rspec stub 访问器

ruby-on-rails - Rails的文档 “script/generate model”在哪里?

ruby-on-rails - 使用 Typheous 手动登录网站

css - 如何相对于容器 DIV 的底部定位 float 元素?

html - Bootstrap 列高度与列间距相同

javascript - 无法让日期选择器与 Best in place rails 4 一起使用

javascript - 管理 Backbone.js/SVG Web 应用程序中的布局?

javascript - 使用来自 json 响应的动态布局 : angularJS