0

几天来我一直在努力解决这个问题,所以希望这里有人可以提供帮助。

我有一个非常基本的 Rails 应用程序(3.2.13),使用以下 gem 进行 twitter bootstrap 样式

gem 'bootstrap-sass'
gem 'font-awesome-sass-rails'

资产按以下方式布局

- stylesheets
    - all
        bootstrap_override.css.scss
    - public
        styles.css.scss
    - admin
        styles.css.scss

引导覆盖包含以下代码

$baseLineHeight: 18px;
$baseFontSize: 14px;
$sansFontFamily: 'Open Sans';
$baseFontFamily: 'Open Sans';
$monoFontFamily: 'Ubuntu Mono';
$linkColor: #56b1e4;
$btnPrimaryBackground: #86b063;

@import "bootstrap";
@import 'font-awesome';

public.css.scss 具有以下内容,并在所有公共页面的默认布局中使用

/*
 *
 *= require_self
 *= require_tree ./all
 *= require_tree ./public
 */

admin.css.scss 如下,并在 admin 命名空间内的页面上使用

/*
 *
 *= require_self
 *= require_tree ./all
 *= require_tree ./admin
 */

继承人的问题:

在生产中,公共页面可以正常工作,没有错误。但是管理页面会抛出 500 并包含以下内容

ActionView::Template::Error (File to import not found or unreadable: bootstrap.
Load path: /sites/blog/releases/20130613100153
  (in /sites/blog/releases/20130613100153/app/assets/stylesheets/all/bootstrap_and_override.css.scss)):
    5:     meta charset="utf-8"
    6:
    7:     = render 'layouts/custom_fonts'
    8:     = stylesheet_link_tag "admin", media: 'all', 'data-turbolinks-track' => true
    9:     = javascript_include_tag "application", 'data-turbolinks-track' => true
    10:     = render 'layouts/custom_fonts'
    11:
  app/assets/stylesheets/all/bootstrap_and_override.css.scss:14
  app/views/layouts/login.html.slim:8:in `_app_views_layouts_login_html_slim___3383884768077581761_25787440'

我试过清除缓存,重新部署(通过 Capistrano 使用资产管道插件完成),静态编译资产,但没有任何效果。

我显然在资产设置中遗漏了一些关键的东西,但是什么?

哦,在开发环境中,这一切都完美无缺,我假设由于资产管道在运行中编译资产。

4

1 回答 1

1

问题可能是资产管道已经将引导程序编译为公共,并且不想将其也添加到管理员。两种可能的方法:

  1. 将 bootstrap 文件与 public 和 admin 文件分开,以便客户端必须加载包含 bootstrap 的基本 CSS 文件,以及 public 或 admin 特定文件。

  2. 在一个 application.css 文件中包含 public 和 admin。如果您需要区分管理员和公共 css,请使用诸如 body 类之类的命名空间。

于 2013-06-13T12:53:54.020 回答