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