没有application.html.erb的页面

时间:2013-11-05 15:27:09

标签: ruby-on-rails ruby twitter-bootstrap

我正在开发我的第一个ruby on rails web应用程序,我有一点问题。我需要两个页面(一个起始页面和一个登录页面),它们没有application.html.erb布局。

目前我通过添加:

获得了这一点
layout false

到我的login_controller.rb文件。但是现在我无法使用我在/ assets / stylesheet和/ assets / javascripts文件夹中包含的twitter bootstrap组件。

有人可以向我展示如何在没有application.html.erb的布局和设计的情况下添加页面的最佳实践方法,但是仍然可以使用twitter引导程序组件吗?

1 个答案:

答案 0 :(得分:3)

您可以创建不同的布局文件,仅包含您需要的资源。 我通常面临的典型场景是网站的管理部分,其中布局从公共部分更改。

在这种情况下,您可以像这样创建布局views/layouts/admin.htm.erb

    <!DOCTYPE html>
    <html>
        <head>
          <title>Admin</title>
          <%= stylesheet_link_tag "admin", :media => "all" %>
          <%= javascript_include_tag "admin" %>
          <%= csrf_meta_tags %>
        </head>
        <body>
            <%= yield %>
        </body>
    </html>

正如您所看到的,js和css资产有两个不同的清单文件。 这意味着有两个文件: /assets/javascripts/admin.js /assets/stylesheets/admin.css

application.jsapplication.css一样,您可能需要引导程序以及特定布局可能需要的其他资源。

这是一个例子:

/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
 * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the top of the
 * compiled file, but it's generally better to create a new file per style scope.
 *
 *= require bootstrap
 *= require_self
 */

最后一件事

您需要告诉rails预编译您创建的新清单文件。

/config/environments/production.rb

# Precompile additional assets (application.js.erb, application.css, and all non-JS/CSS are already added)
 # config.assets.precompile += %w( search.js )
 config.assets.precompile += %w( admin.css admin.js )

现在可以使用布局

在您的控制器中:

layout "admin"