【问题标题】:Am I loading my js files correctly in the asset pipeline?我是否在资产管道中正确加载了我的 js 文件?
【发布时间】:2012-05-05 02:38:54
【问题描述】:

在 main.js 中,我有:

$(document).ready(
  function(){

  alert('foo');

});

app/assets/javascripts/application.js 有:

//= require jquery
//= require jquery_ujs
//= require main

正在开发中。运行rake assets:precompile 后,我刷新任何页面,它执行alert('foo') 两次。它应该只做一次。好像加载了两个 main.js 副本。

我做错了吗?

【问题讨论】:

  • 如果你删除那些预编译的资产并在 dev 中运行,它是否只警告一次?想知道 dev 是否​​同时加载、编译和现有文件。
  • 是的,如果我删除预编译的资产。它会发出一次警报。似乎 dev 正在加载两者。已编译和现有文件?应该这样做吗?
  • 听起来开发模式正在同时运行......我猜有一种方法可以关闭它。无论如何,它不应该发生在 prod 中——至少我猜 :-)
  • 嗯,我猜它不会在生产中发生,因为config.serve_static_assets = false 存在于config/environments/production.rb 中。我把同一行放在config/environments/development.rb 中,它只警告一次。但这是正确的方法吗?
  • 也许在 development.rb 中设置:config.assets.debug = false?或者只是不要在开发模式下预编译。我知道我没有;-)

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


【解决方案1】:

在您的 config/environments/development.rb 中尝试设置:

 config.assets.debug = false 

或者只是不要在开发中预编译您的资产。 js 可能会在您的开发环境中执行两次,因为您已经预编译了资产;因此,它现在正在执行原始文件中的脚本和您预编译的脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2014-03-23
    相关资源
    最近更新 更多