0

我目前正在开发我的第一个 ruby​​ on rails web 应用程序,但我遇到了一些问题。我需要两个没有application.html.erb布局的页面(一个起始页面和一个登录页面)。

目前,我通过添加:

layout false

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

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

4

1 回答 1

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"
于 2013-11-05T16:01:56.647 回答