Ruby on rails rails 4-使用浏览器更新属性';仅当离开网页时,单击“上一步”按钮

Ruby on rails rails 4-使用浏览器更新属性';仅当离开网页时,单击“上一步”按钮,ruby-on-rails,browser-cache,back-button,update-attributes,Ruby On Rails,Browser Cache,Back Button,Update Attributes,我试图跟踪用户访问的页面以及用户访问和离开的时间。我按照中的建议成功存储访问时间。以下是流程: (在视图A中)用户单击页面A中的按钮 (在actionB中)创建新记录以存储访问时间 (在操作B中)重定向到页面B 但是当我想用这种方法来存储休假时间时,我遇到了一些问题。我想将用户离开页面的时间更新到我刚刚创建的记录。当用户点击我在网页中创建的“后退”按钮时,上述方法就起作用了 若用户单击浏览器的“后退”按钮,它将不会执行任何操作。我猜update\u attribute不起作用的原因是Ruby

我试图跟踪用户访问的页面以及用户访问和离开的时间。我按照中的建议成功存储访问时间。以下是流程:

  • (在视图A中)用户单击页面A中的按钮
  • (在actionB中)创建新记录以存储访问时间
  • (在操作B中)重定向到页面B
但是当我想用这种方法来存储休假时间时,我遇到了一些问题。我想将用户离开页面的时间更新到我刚刚创建的记录。当用户点击我在网页中创建的“后退”按钮时,上述方法就起作用了

若用户单击浏览器的“后退”按钮,它将不会执行任何操作。我猜
update\u attribute
不起作用的原因是RubyonRails在单击浏览器的后退按钮时不调用控制器中的操作。。。。。。 当用户单击浏览器的后退按钮时,它如何工作?

流程可能是这样的:

  • (在viewB中)用户单击pageB中的“后退”按钮或单击浏览器的后退按钮
  • (行动A)更新休假时间
  • (在操作A中)重定向到页面A
review.html.erb


使用javascript解决此问题:

$(window).on("navigate", function (event, data) {
  var direction = data.state.direction;
  if (direction == 'back') {
    <% update_method_helper %>
  }      
});
$(窗口).on(“导航”),函数(事件、数据){
变量方向=data.state.direction;
如果(方向==‘返回’){
}      
});

将其用作分部,并在每个要使用它的页面中调用此分部(如果希望所有页面在布局中使用它)。

使用javascript解决此问题:

$(window).on("navigate", function (event, data) {
  var direction = data.state.direction;
  if (direction == 'back') {
    <% update_method_helper %>
  }      
});
$(窗口).on(“导航”),函数(事件、数据){
变量方向=data.state.direction;
如果(方向==‘返回’){
}      
});

将其用作分部,并在每个要使用它的页面中调用此分部(如果希望所有页面都在布局中使用它)。

我将此脚本放在重定向到的页面中,但似乎什么也没有发生。什么是“更新方法帮助器”?我得到了未定义的局部变量或方法,所以我更改为我希望它在操作中执行的操作,对吗?(我把这两行改为:
@lastevent=Event.where(:user=>@user.order(“id”).last@lastevent.update\u attributes!(:leave\u time=>time.now)
我也尝试将此脚本放在我离开的页面中,更新属性确实有效,但每次打开此页面时它都有效,而不是单击“上一步”按钮离开此页面时……我做错了什么吗?似乎你做得很好谢谢你的快速响应。我希望
更新属性
仅在离开页面时有效网页(单击浏览器的后退按钮),但当我打开网页时,此脚本直接工作……是否可以通过javascript执行我想要的操作?我将此脚本放在重定向到的页面中,但似乎什么都没有发生。什么是“update\u method\u helper”?我得到了未定义的局部变量或方法,所以我更改为希望它在操作中执行的操作,对吗?(我改为两行:
@lastevent=Event.where(:user=>@user.order(“id”).last@lastevent.update\u attributes!(:leave\u time=>time.now)
我也尝试将此脚本放在我离开的页面中,更新属性确实有效,但每次打开此页面时它都有效,而不是单击“上一步”按钮离开此页面时……我做错了什么吗?似乎你做得很好谢谢你的快速响应。我希望
更新属性
仅在离开页面时有效网页(点击浏览器的后退按钮),但当我打开一个网页时,这个脚本可以直接工作……是否可以通过javascript实现我想要的功能?
$(window).on("navigate", function (event, data) {
  var direction = data.state.direction;
  if (direction == 'back') {
    <% update_method_helper %>
  }      
});