我正在开发我的第一个ruby on rails web应用程序,我有一点问题。我需要两个页面(一个起始页面和一个登录页面),它们没有application.html.erb
布局。
目前我通过添加:
获得了这一点layout false
到我的login_controller.rb
文件。但是现在我无法使用我在/ assets / stylesheet和/ assets / javascripts文件夹中包含的twitter bootstrap组件。
有人可以向我展示如何在没有application.html.erb
的布局和设计的情况下添加页面的最佳实践方法,但是仍然可以使用twitter引导程序组件吗?
答案 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.js
和application.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"