我的application.js不起作用,application.css不会在Rails中更新

时间:2013-02-15 23:34:27

标签: ruby-on-rails ruby ruby-on-rails-3 heroku asset-pipeline

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

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

development.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

enviroment.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之前一切正常。

3 个答案:

答案 0 :(得分:4)

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

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

$(function() {});

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

这一行:

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

可能应该在application.rb而不仅仅是development.rb,但如果您在部署到Heroku之前手动预编译开发模式中的资产,则无关紧要。

答案 1 :(得分:2)

如果您想要查看开发中的更改,则不应预编译资产。要还原预编译,请尝试rake assets:clean。此外,在清单文件application.js中使用js代码并不是一种好的方式。在app/assets/javascripts/中创建一个新文件并将代码移到那里。

答案 2 :(得分:0)

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

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

通过手动清空public/assets或致电rake assets:clean来清理预编译的文件。

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