Jquery更新rails变量

时间:2013-11-24 19:14:58

标签: jquery ruby-on-rails ajax

我在rails网站上有一个ruby,因为我有一个名为@number的变量。该变量使用api来获取数字然后显示它。问题是每次刷新只会更新一次。我需要它每10秒更新一次,我相信它可以在jquery / ajax中完成。我试过在网上看,但没有发现任何类似或与铁路。感谢。

1 个答案:

答案 0 :(得分:1)

如果您的模板中有这样的内容:

Hi you have <div id="my_number"><%= @number %></div> here?

更新该号码的一种方法是发送像这样的ajax请求

var number = $("#my_number").value(); // get current number as displayed in template
// send the number to the server
$.ajax({
  url: your_controller/check_number,   // your controller
  data: number, // data
  success: success,
  dataType: "script" // not 100% sure here might need to google
});

在您的控制器中,您可以执行“check_number”操作:

def check_number
    @old_number = params[:number] // number from the template
    @new_number = update_my_number // not sure what or how your number changes
    respond_to do |format|
      format.js // render your js.erb template
    end
end

最后在你的js.erb模板中这样:

<% if @old_number != @new_number %>
  $("#my_number").value(<%= @new_number %>);  // of course you can also do this in controller and just update everytime
<% end %>

并且每次调用时调用x(在这种情况下为5秒)秒,只需将其包装在:

window.setInterval(function(){
  // call me here
}, 5000); // ms
编辑:我假设api你指的是你可以控制的东西(你的rails app),如果不是这样的话,你只需要挂钩ajax方法中的成功回调并用jquery更新变量。 / p>