0

我有一个看起来像这样的文件结构:

/stylesheets
  application.css.scss
  home.css.scss
  /office_listings
    new.css.scss
    index.css.scss
    show.css.scss
  /neighborhoods
    show.css.scss
    index.css.scss

等等。我的应用程序包含一个 require_tree 语句。我认为这会将我所有的 CSS 编译到 application.css.scss 文件中。但是当我访问本地主机上的页面并检查页面资源时,我不仅看到了我的 application.css.scss 文件,还看到了我制作的所有其他 CSS 文件。我的 javascript 文件也是如此。

我尝试运行 rake assets:clean 并手动删除缓存在我的公用文件夹中的所有文件,以防万一它是 rake assets:precompile 的问题,我运行了几次,但我仍然遇到同样的问题。

4

2 回答 2

2

如果您在development环境中运行 Rails 应用程序,这是预期的行为(默认)。默认情况下,development设置config.assets.debugtrue,这会导致单独提供所有资产文件以简化调试 - 浏览器的 CSS 检查器将向您显示规则源自的正确文件,而不是始终指向单个生成的单个文件。

但是,如果您在production环境中预编译并运行应用程序,则只会生成并提供一个文件。您可以通过运行以下命令对此进行测试:

RAILS_ENV=production rake assets:precompile
RAILS_ENV=production rails server

如果您现在访问您的站点,您应该只会看到一个application.css包含所有样式表的文件。(确保您的config/environments/production.rb文件包含config.serve_static_assets = true- 否则,您将不会得到任何样式表,只会看到无样式的 HTML。)

有关更多详细信息,我推荐Rails 指南中有关资产管道的“关闭调试”部分。

于 2013-07-28T17:01:15.680 回答
1

如果您有config.assets.debug = truewhere config/environments/{environment}.rbcould {environment}bedevelopmentproduction,那么您的所有资产文件都将像您提到的那样展开。

将该行更改为config.assets.debug = falseand 你只会看到application.cssand application.js

于 2013-07-28T17:04:35.963 回答