javascript - rails : gon is not defined error

标签 javascript ruby-on-rails heroku ruby-on-rails-4

我被设置为在我的 Heroku Rails 4 应用程序中使用 Gon。 Gon 在暂存 Heroku 应用程序中大约 90% 的时间工作,但在生产 Heroku 应用程序中 100% 的时间失败。在我的控制台中,我收到错误,因为很多人都有:

//javascript console
Uncaught ReferenceError: gon is not defined

有很多建议可以克服这个问题,我已经勉强提出了一个非常不完美的解决方案(#8)。我试过:

  1. 将 <%= include_gon %> 放在 application.html.erb 正文中。

  2. 将 <%= include_gon %> 放在 application.html.erb 头部。

  3. 将 <%= include_gon %> 放在需要它的各个 View 中,而不是放在 application.html.erb 中

  4. 将 <%= include_gon %> 放在需要它的各个 View 中,同时将其包含在 application.html.erb 中

  5. 是否将 <%= include_gon %> 替换为巧妙的 <%= include_gon if defined? gon && gon.present? %>

  6. 从我的 gemfile 中删除 turbolinks 和 jquery-turbolinks,它们无法推送到 Heroku。它们已被替换。

  7. 在 javascript 中包装所有与 gon 相关的变量定义: if (gon == defined) { var blah = gon.blah } else { var blah = bleh }

  8. 在 application.html.erb 中包含 <%= Gon::Base.render_data({}) %>,并将 javascript 文件的全部内容移动到各自的 View 文件中。不显眼的 javascript 就这么多了。但是这个解决了这个问题。

我不知道如何正确地做到这一点。

如何让“gon”在我的应用中发挥作用?另外,如果有人知道,当它们在代码和 Rails 环境中相同时,为什么它适用于一个 Heroku 应用程序而不适用于另一个应用程序?

更新 我从来没有解决过这个问题。我删除了 Gon 并根据需要用 Ajax 替换了变量。

最佳答案

我发现将此添加到您的标题中很有帮助。

<%= include_gon(:init => true) %>

也适用于 Rails 4。

关于javascript - rails : gon is not defined error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24541445/

相关文章:

javascript - 悬停时停止的进度条循​​环

javascript - 如何让这个 HTML5 canvas 脚本全屏显示?

ruby-on-rails - 如何将 <%= link_to 转换为 "Upgrade"、 :settings, :class => "button" %> to a block in Rails 3?

javascript - Uncaught ReferenceError : Main is not defined with webpack/react in Rails 4. 2.4

Heroku 'Writing config/database.yml to read from DATABASE_URL' 是什么意思?

javascript - li 元素标签中的数字不适用于 vue.js

javascript - Postgres 的 Sequelize-auto

ruby-on-rails - 如何使用params.fetch强参数

mysql - 使用 AWS RDS 在 Heroku App 上获取 Mysql2::Error(SSL 连接错误:ASN:错误的其他签名确认)

heroku - 在 Heroku 上运行时激活 JetPack WordPress 插件?