javascript - 如何将变量从 Rails 传递到 Ajax

标签 javascript jquery ruby-on-rails ruby ajax

我正在尝试使用 Ruby on Rails 应用程序实现进度条 (Javascript),但我无法将值从 Controller 传递到 JS 以更新进度条。

最初,我尝试使用一个简单的全局变量 ($count),但一旦加载,该变量始终相同。 JS端没有更新。

编辑:

现在我正在使用 gon gem 来传递值。但我只得到第一个值(在 Controller 启动时设置)。当我调用由单击按钮触发的方法时,值会更新,但 gon 变量始终相同。也许是 rails/controller 中的错误?

我看到了一个示例,其中包含一种将变量公开给 gon 的方法,但它不起作用。

注意:如果我去掉搜索前的初始化if,点击搜索时JS端显示“gon variable undefined”

示例代码: application_controller.rb

def application 
  @count =0 #gon assumes only this value
  exposeUnProcessedJobToJavascript

  if params[:search]

    while(@count < 10)
      exposeUnProcessedJobToJavascript
      sleep 3
      @count +=1
    end
  end
  def exposeUnProcessedJobToJavascript
    gon.watch.job = @count
  end
end

应用程序.js.erb

function addJobWatchers() {

  if (gon.job != undefined) {

    gon.watch('job', {
        interval: 1000
    }, updateProcessingJob);
  }
}

function updateProcessingJob(job) {

  if (job) {
    console.log("JOB: " + job);
  }
}

$(document).on('page:change', function() {
 $("#search_button").click(function() {
    console.log("click search");
    if (typeof gon !== 'undefined') {
        addJobWatchers();
    }
 });});

最佳答案

这里有一个 gem 可以帮助您做到这一点。它有大量的解释和示例来帮助您入门。

https://github.com/gazay/gon

关于javascript - 如何将变量从 Rails 传递到 Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33711516/

相关文章:

javascript - 使用javascript创建循环来删除pdf中的书签

jquery - 将日期转换为 jQuery Flot 时间

ruby-on-rails - 限制 Rails 中日志输出的长度

ruby-on-rails - 在 Ruby 中更新包后未初始化的常量 AWS (NameError)

javascript - 在javascript中获取DOM元素哈希?

javascript - 设置JS全局时区

javascript - 当按钮被禁用时 jQuery 抛出错误

javascript - jQuery .map() 问题

ruby-on-rails - Create_table 方法/ block

javascript - 在 react 中将数据从数组加载到选择列表中时出现问题