Rails 3.2 ActionView::Template::Error javascript_include_tag: Rails 3.2中的ActionView::Template::Error javascript_include_tag:

3

我有一台Windows 7笔记本电脑,上面的开发环境运行良好。今天,我得到了一台新的Windows 8笔记本电脑,并尝试在上面设置开发环境。安装了Rails等组件并创建了新的示例应用程序,它可以正常工作。然后我克隆了我的应用程序并尝试运行,但出现了以下错误:

Completed 500 Internal Server Error in 2354ms

 ActionView::Template::Error ((in C:/....../appname/app/assets/javascripts/gmaps4rails/gmaps4rails.base.js.coffee)):
3: <head>
4:   <title><%=yield :title %></title>
5:   <%= stylesheet_link_tag    "application", :media => "all" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8:   <%= render 'layouts/shim' %>
9: </head>
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__782381622_56858160'


Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.7/lib/action_dispa

我搜索了谷歌和Stack Overflow关于javascript_include_tag的相关信息,查看了多个主题帖,但是仍然无法找到解决方案。
非常感谢您的帮助来解决这个问题。
环境信息如下:
$rails -v
Rails 3.2.7

$ruby -v
ruby 1.9.3p327 (2012-11-10) [i386-mingw32]

编辑:我刚刚注意到,即使是空的咖啡脚本文件,也会出现这个问题。我仍然不知道如何解决它。


可能是 JavaScript 引擎问题。尝试安装 "therubyracer" gem。 - Jason
2个回答

8
请看我做的修改,这样可以解决 execjs runtimes.rb 的问题,参考这个链接:https://github.com/sstephenson/execjs/issues/81。具体请编辑lib/execjs/runtimes.rb(在execjs gem的路径下...c:\Ruby192\lib\ruby\gems\1.9.1\gems\execjs-1.3.0 on my machine),将JScript runtime定义如下:
JScript = ExternalRuntime.new(
  :name        => "JScript",
  :command     => "cscript //E:jscript //Nologo",
  :runner_path => ExecJS.root + "/support/jscript_runner.js",
  :encoding    => 'UTF-8'
)

问题似乎出现在Windows 8的JS运行时上。不确定具体情况。可能有几种解决方法,例如安装node.js、therubyracer或类似的工具。但是下面这个方法可以解决问题。


今天复制了这个(别问我为什么还要用win8)。 - prusswan

1
如果您将application.js中的"application"更改为"default",它将开始工作。我不知道为什么,但它确实起作用。
阅读application.js时,感觉页面将尝试在assets/javascripts/文件夹中寻找turbolinks.js,但找不到该文件。当我们将其从application更改为default时,它会从Ruby的默认位置获取turbolinks,而不是应用程序的位置。这只是我的猜测。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接