Javascript Ajax请求期间,Gon变量未从rails控制器传递到js

Javascript Ajax请求期间,Gon变量未从rails控制器传递到js,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,我正在尝试创建一个彩票投注网站(作为一个挑战)。我的控制器中有一个方法,当用户向罐中添加钱时,更新罐。我在主页上显示pot总数,并希望在有人向pot中添加资金后立即使用Ajax进行更新。我使用gon gem将变量(比如pot total)从控制器传递到javascript。当页面被重新加载时,它工作,但当使用ajax调用update方法时,它不工作 这是我的页面控制器: def home @jackpot = Jackpot.last gon.pot = @jackpot.pot end

我正在尝试创建一个彩票投注网站(作为一个挑战)。我的控制器中有一个方法,当用户向罐中添加钱时,更新罐。我在主页上显示pot总数,并希望在有人向pot中添加资金后立即使用Ajax进行更新。我使用gon gem将变量(比如pot total)从控制器传递到javascript。当页面被重新加载时,它工作,但当使用ajax调用update方法时,它不工作

这是我的页面控制器:

def home
  @jackpot = Jackpot.last
  gon.pot = @jackpot.pot
end
def update
  @jackpot = Jackpot.find(params[:id])
  if params.has_key?(:amount)
    @jackpot.update(pot: @jackpot.pot + params[:amount].to_f)
    gon.pot = @jackpot.pot
  end
  respond_to do |format| 
    format.js
  end
end
JackpotsController:

def home
  @jackpot = Jackpot.last
  gon.pot = @jackpot.pot
end
def update
  @jackpot = Jackpot.find(params[:id])
  if params.has_key?(:amount)
    @jackpot.update(pot: @jackpot.pot + params[:amount].to_f)
    gon.pot = @jackpot.pot
  end
  respond_to do |format| 
    format.js
  end
end
Javascript:(在url中:id现在是硬编码的)

}))

这将更新锅的甜甜圈进度条

function updatePot() {
  updateDonutChart('#jackpot-donut', gon.pot , true); 
}
下注按钮:(金额也硬编码)


0.1),方法::post,:remote=>true,id:“bet btn”,类:“btn btn info btn lg”%>

我对rails非常陌生,尤其是javascript/ajax,所以如果有任何帮助,我将不胜感激。谢谢

在控制器中,只需响应JSON:

respond_to do |format|
  format.json { render json: { pot: @jackpot.pot } }
end
使用
$.ajax
过帐时指定数据类型。请注意,新数据正在传递给success函数,因此它不是
gon.pot
,而是
data.pot

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: function(data) {
    console.log('pot', data.pot);
  }
});

does
console.log(“Pot大小:+gon.Pot”)通过显示更新后的pot值是否按预期运行?另外,在开发者控制台中是否有任何错误?@abax否,它显示旧的gon.pot(当前但未更新)。刷新页面并再次提交ajax请求时,将显示新值。这(我想)是因为gon.pot设置在页面#home action中。也许可以尝试使用
gon.watch
,您与gon的关系如何?您可以简单地返回JSON和更新的数量,并在您的
$.ajax
@Leito的成功回调中读取它。尝试它,因为没有其他东西对我有效。如何将JSON返回到ajax回调?谢谢你的帮助!考虑返回整个“头奖”(或者它与页面相关的所有),并使用更健壮的东西来构建JSON对象:JBuilder、活动模型序列化器等。