首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >离页编辑模型

问离页编辑模型
EN

Stack Overflow用户
提问于 2016-07-10 22:51:41
回答 2查看 150关注 0票数 0

我有一个网站,用户可以通过嵌入式JW播放器观看运动视频。我想把他们花在观看视频上的时间添加到他们的用户模型中。我已经设置了数据库,但是我不知道如何将观察到的时间添加到他们的用户模型中。

例如,如果用户观看3分钟的视频,我希望能够将其存储在用户模型中。如何在离开页面时调用一个方法,以便将他们观看视频的时间添加到他们的用户帐户中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-11 00:10:56

为此,您可以使用ajax更新。但是,您不希望在离开页面时触发此更新,因为它不可靠(不确定关闭async是否有任何好处)。相反,您应该定期轮询ajax更新(每10次说一次)以更新记录。下面是我建议的解决方案。

VideosController

代码语言:javascript
复制
def show
  video = Video.find(params[:id])
  # Assuming Video belongs_to User, User has two fields called started_watching_at and duration 
  video.user.update_attribute(:started_watching_at, [current_time])
  video.user.update_attribute(:watching_duration, 0)
end

# This method is to update user watching time
def touch_duration
  video = Video.find(params[:id])
  # Calculate time different then convert to duration
  duration = [current_time] - [started_watching_at]
  video.user.update_attribute(:watching_duration, duration)
  respond_to do |format|
    format.js { render nothing: true }
  end
end

在js文件中,您基本上希望使用touch_duration方法轮询更新用户记录。就像这样:

代码语言:javascript
复制
$(function() {
  var time_to_check = 10000;
  setInterval(time_to_check, touch_duration);

  function touch_duration() {
    // Update user
    $.ajax({
      url: // update url,
      method: "PUT"
    }, function(data) {
      console.log("Successfully update!");
    });
  }
})

更新:我忘记提到您可能只想在视频显示页面中运行ajax更新。我想你可以很容易地解决这个问题。

希望这能回答你的问题。干杯!

票数 1
EN

Stack Overflow用户

发布于 2016-07-11 00:34:09

卡斯佩利特说的话我不同意。要更好地控制位置,可以做的另一件事是使用localStorage存储位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38297137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档