1

我将我的应用程序配置为在 Heroku 上工作,但我遇到了问题。在开发模式下,当我更改 CSS 的一部分并刷新浏览器时,我的 CSS 不会加载。

我检查了日志,application.css 没有加载。我需要它每次在开发模式下加载。此外,我的 application.js 停止工作,我不知道为什么。

开发.rb:

  # Do not compress assets
  config.assets.compress = false
  config.assets.precompile += %w( login.css )

  # Expands the lines which load the assets
  config.assets.debug = true

环境.rb:

  config.active_record.whitelist_attributes = true

   # Enable the asset pipeline
   config.assets.enabled = true

   # Version of your assets, change this if you want to expire all your assets
   config.assets.version = '1.0'

   config.assets.initialize_on_precompile = true

我使用手动编译资产$ rake assets:precompile RAILS_ENV=development,除了 application.js 代码之外它可以工作:

//= require jquery
//= require jquery_ujs
//= require_tree .
//= require jquery.reveal
$(document).ajaxStart(function() {
    $( "#load_img" ).animate({
            height:"toggle",
      opacity:"toggle"
        });
});

$(document).ajaxSuccess(function() {
    $( "#load_img" ).fadeOut('fast');
});

$(document).ready(function() {
  setTimeout(
    function() {
      $("#flash_messages").fadeOut(3000)
    }, 
    2500);
});

在部署到 Heroku 之前一切正常。

4

3 回答 3

4

您不需要application.js文件本身。像这样使用require_self :

//= require jquery
...
//= require_self

$(function() {});

application.js也很确定你应该在文件本身的包含结尾和代码开头之间有一个换行符。

还有这一行:

config.assets.precompile += %w( login.css )

可能应该是 inapplication.rb而不仅仅是development.rb,尽管如果您在部署到 Heroku 之前在开发模式下手动预编译资产,这无关紧要。

于 2013-02-15T23:37:41.903 回答
2

如果你想看到开发中的变化,你不应该预编译你的 assets 。要恢复预编译,请尝试rake assets:clean. 此外,在清单文件中包含 js 代码也不是一种好的风格application.js。在其中创建一个新文件app/assets/javascripts/并将代码移到那里。

于 2013-02-15T23:53:19.080 回答
0

在开发中预编译您的资产意味着您将需要继续预编译它们以查看您所做的任何更改。

当您预编译资产时,这将在 中创建一个静态 css 文件public/assets,并且您的 Web 服务器将始终提供静态资产(例如 中的那些public/assets),然后再在资产管道中查找新文件。

通过手动清空public/assets或调用rake assets:clean.

当您部署到 Heroku 时,它会在部署时自动为您编译资产。

于 2013-02-16T07:35:52.893 回答