Rails 4和gon - 不工作? window.gon = {};

时间:2014-11-04 11:11:04

标签: javascript ruby-on-rails ruby-on-rails-4 coffeescript

我正在尝试使用gon和rails 4,但它似乎根本不起作用。

在application.html.erb中我有

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

我尝试过使用和不使用init语句,并尝试将其置于我的控制器视图中

在我的控制器中我有

    gon.item_status = "delivered"
    respond_to do |format|
      format.json { render json: item, location: item }
    end 

在我的咖啡脚本中我有

$ ->
  $("a[data-remote]").on "ajax:success", (e, data, status, xhr) ->
    console.log(item_status)

在控制台中,我看到未定义,在窗口源代码中,我看到以下内容:

//<![CDATA[
window.gon={};
//]]>

所以我可以看到gon已经加载并且正在尝试获取变量,但没有任何东西被传递给它。我的控制器代码是否存在问题,或者rails 4存在更广泛的问题吗?

1 个答案:

答案 0 :(得分:1)

您需要使用gon对象访问JS中的gon变量 - 例如gon.item_status

对于AJAX请求,您需要使用gon.watch“监视”gon数组,它不会自动使用AJAX请求更新head标记中的JS。

请参阅gem主页:

https://github.com/gazay/gon