Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript_include_标记:应用程序在开发环境中加载两次javascript_Javascript_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.2_Asset Pipeline - Fatal编程技术网

javascript_include_标记:应用程序在开发环境中加载两次javascript

javascript_include_标记:应用程序在开发环境中加载两次javascript,javascript,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,asset-pipeline,Javascript,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,Asset Pipeline,这很奇怪 我的布局的标题中的这行代码部分: <%= javascript_include_tag :application %> 我正在使用Rails 3.2.13,这是怎么回事?它没有包含两倍于application.js的内容。application.js中包含的任何内容都将在开发环境中引用,并且在application.js中编写的任何js代码都将添加到最后一次application.js调用中。尝试单击application.js reference,您会注意到这一点 然而

这很奇怪

我的布局的
标题中的这行代码
部分:

<%= javascript_include_tag :application %>

我正在使用Rails 3.2.13,这是怎么回事?

它没有包含两倍于
application.js的内容。application.js中包含的任何内容都将在开发环境中引用,并且在
application.js
中编写的任何js代码都将添加到最后一次
application.js
调用中。尝试单击application.js reference,您会注意到这一点

然而在生产环境中;它将只引用将包含所有其他被引用文件的代码的
application.js

运行

bundle exec rake assets:clean

这会清理所有预编译的资产,因为在开发环境中不需要它们(它们是通过资产管道提供的)

以前我的Rails应用程序也有类似的问题。包括线路

config.serve_static_assets = false
development.rb
文件中解决了这个问题。(根据rubyonrails.org,此配置项在开发中默认为
true
,在生产中默认为
false
,这就是为什么在生产中没有此问题。)

此设置决定Rails是否应提供
public/
目录中的静态断言。在生产环境中,Web服务器将处理此任务,因此设置默认为
false

您可能想看看这些帖子:

正如@gertas在这篇文章中所说:

config.service\u static\u assets=false
添加到
development.rb
将阻止从
/public/assets
加载文件

最后,您还可以使用


它对Rails应用程序中的配置项提供了全面的解释。

application.js没有加载两次,但情况是这样的-

默认情况下,开发环境中的资产不会预编译。 因此,您的application.js将在所有Java脚本的末尾加载。实际上application.js文件包含运行应用程序所需的所有js文件,如果在此之前没有加载任何js文件,则会显示错误

比如说 My application.js文件包含以下内容

//= require jquery
//= require jquery_ujs
//= require foundation
//= require turbolinks
//= require_tree .
这意味着必须先加载所有这些js文件,然后再加载application.js

但在生产环境中,所有的js文件都是在单个application.js文件中预编译的,您在其中只看到一个文件


因此,我建议不要担心这一点。这是rails 3应用程序在开发环境中的正常行为。

从公用文件夹中删除资产管道文件夹。默认情况下,它会自动从该区域加载js文件。

您是否在开发中运行了
rake assets:precompile
?不这样认为,但无论如何,我还是按照您的建议调用了
bundle exec rake assets:clean
。@Darmen不知道您是否已经解决了问题。如果没有,您是否尝试将
config.service\u static\u assets=false
添加到
development.rb
文件中?开发中的
application.js
的内容是什么?(严肃的问题,请在这里发布代码)@Paul,也许
config.serve\u static\u assets=false
解决了这个问题,因为之前(也回复@Michael)在开发中的
application.js
的内容同样是清单中包含的所有Javascript,而现在,总是在开发中,我像以前一样看到了对每个javascript的所有调用,但是
application.js
只包括注释行(从“这是一个清单…”到“在下面的..之后”没有javascript代码了。这是正确的行为吗?不管怎样,现在每个javascript实际上只调用了一次。仍在研究,但问题似乎已经解决了!是吗,还指定了开发环境:bundle exec rake assets:clean RAILS_ENV=development Result:/Users/me/.rbenv/versions/1.9.3-p448/bin/ruby/Users/me/.rbenv/versions/1.9.3-p448/bin/rake assets:clean:all RAILS_ENV=development RAILS_GROUPS=assets rm-rf/Users/me/dev/RAILS/myapp/public/assets但没有任何变化我知道,我没有得到你的答案。Application.js工作得很好,问题是,在它之前,而且只有在开发中,每个javascript文件都有一个调用,我不知道为什么!
bundle exec rake assets:clean
config.serve_static_assets = false
//= require jquery
//= require jquery_ujs
//= require foundation
//= require turbolinks
//= require_tree .