我有点菜鸟,所以请多多包涵!
我正在尝试——当用户在仪表板上登录时——让 jQuery 每 X 秒定期 ping 服务器,并使用当前日期时间更新用户的“心跳”并将“在线”设置为 true。
我可能缺少一些涉及 jQuery 和 Rails 之间通信的 RESTful 概念和概念。刚刚完成 Michael Hartl 的 Ruby on Rails 教程并正在构建他的示例应用程序。
我做过研究,但答案主要涉及填写表格;我想在没有人的情况下做到这一点。
所以我需要以某种方式将 :user_id 传递给 jQuery 并将其链接到正确的 URI。我有一个状态控制器和一个状态模型,它们属于一个用户(其中一个)。Heartbeat 和 Online 在状态表中。
rake routes 显示: PUT /states/:id(.:format) states#update
states_controller.rb
class StatesController < ApplicationController
before_filter :signed_in_user, only: [:thump]
before_filter :correct_user, only: [:thump]
def new
end
def update
@user = User.find(params[:id])
user.update_attributes(heartbeat: Time.now, online: true)
respond_to do |format|
format.js
end
end
end
应用程序.js
jQuery.ajaxSetup({
'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
})
// Periodically updates heartbeat
$(function(){
setInterval (thump, 3000);
var js = '<thump> ';
function thump(){
console.log(js + 'Test');
$.ajax({
url: 'states/update',
type: 'POST',
success: function(result) {
console.log(js + result);
}
});
}
});
谢谢您的帮助。