Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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
Ruby on rails Rails应用程序中包含Javascript的问题_Ruby On Rails_Ruby_Ruby On Rails 3_Heroku_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails Rails应用程序中包含Javascript的问题

Ruby on rails Rails应用程序中包含Javascript的问题,ruby-on-rails,ruby,ruby-on-rails-3,heroku,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Heroku,Ruby On Rails 3.2,我使用的是Rails 3.2.8。部署应用程序时,访问包含javascript的视图: <%= javascript_include_tag "epiceditor" %> 我已经检查了一些可能的解决方案,比如检查任何可能触发循环依赖的引用,或者简单地删除它,以防它被包含在其他地方,而不是。所以,如果我包含它,我会得到这个“已经被包含错误”,如果我没有,那么文件就根本不被包含 我的config/application.rg有以下内容 config.assets.initia

我使用的是Rails 3.2.8。部署应用程序时,访问包含javascript的视图:

<%= javascript_include_tag "epiceditor" %>
我已经检查了一些可能的解决方案,比如检查任何可能触发循环依赖的引用,或者简单地删除它,以防它被包含在其他地方,而不是。所以,如果我包含它,我会得到这个“已经被包含错误”,如果我没有,那么文件就根本不被包含

我的config/application.rg有以下内容

    config.assets.initialize_on_precompile = false
而applications.js有以下功能:

//= require jquery
//= require jquery_ujs
//= require tabs
可能需要注意的是,标记引用的文件是“epiceditor.js.erb”,因为它包含一些我需要的嵌入式Rails代码

谢谢你的帮助

编辑:

我相信这是链轮中的一个缺陷。如果我将Rails更新为3.2.9rc2,则错误如下: ActionView::Template::Error(资产逻辑路径没有扩展名:epiceditor/.js

当然,epiceditor中的扩展名是epiceditor.js.erb,我也尝试在javascript_include_标记中明确说明它。

我发现了错误。 结果是在我调用的.js.erb文件中

<% asset_path 'epiceditor/' %>

它应该扩展到所有epiceditor文件所在的路径,但实际上是以递归方式加载文件本身。这是在开发环境中正确扩展,而不是在生产环境中。很有趣,对吗? 这样做的原因是添加了摘要。因此,我用以下内容修复了整个问题:

<%= asset_path 'epiceditor/', :digest => false %>
false%>
现在它确实扩展到了目录,并且没有落入递归陷阱


希望这能为某些人节省一些时间!

你说Heroku失败了;我认为它在开发环境中工作?是的,它在开发环境中工作。在Heroku生产环境中失败了。只是要确定,当你说它在开发中工作时,文件是包含在你的HTML中,还是页面刚刚加载而没有错误?看到你的内容了吗你的application.js文件,epiceditor.js.erb文件将不会被加载,除非你特别称它为:require epiceditor,或者除非你在文件夹中的其余文件中加载:require tree.,(我认为这是正确的语法-我刚刚从内存中编写)。我在必要的页面中明确地将其包含在via中,并且确实在开发环境中使用。如果我使用require_tree,它也可以工作,但同样,只在开发中工作。您确定不可以,在application.js中执行//=require_tree吗?
<%= asset_path 'epiceditor/', :digest => false %>