Rails 4 - 仅在离开网页时使用浏览器的后退按钮更新属性



我正在尝试跟踪用户访问的页面以及用户访问和离开的时间。我通过遵循关于如何使用链接更改数据库值的建议,成功地存储了访问时间。流程如下:

  • (在视图A中)用户单击页面A中的按钮
  • (在操作B中)创建一个新记录以存储访问时间
  • (在操作B中)重定向到页面B

但当我想将这种方法应用于存储休假时间时,我遇到了一些问题。我想将用户离开页面的时间更新为我刚刚创建的记录。当用户点击我在网页中创建的"返回"按钮时,上述方法就可以工作了。

若用户点击浏览器的后退按钮,它将不会执行任何操作。我想update_attribute不起作用的原因是,当浏览器的后退按钮被点击时,ruby on rails没有调用控制器中的操作。。。。。。当用户单击浏览器的后退按钮时,它如何工作

流程可能是这样的:

  • (在视图B中)用户单击页面B中的"后退"按钮或单击浏览器的后退按钮
  • (行动A)更新休假时间
  • (在操作A中)重定向到页面A

review.html.erb

# while click the "Back" button, redirect to "store" and update leave time for the record just create
<%= button_to "Back", {:action=>"stores", :user=>@product.user, :order=>@product.order}, :method=>:get %>

控制器rb

def store
    @user = params[:user]
    @order = params[:order]
    @lastevent = Event.where(:user=>@user).order("id").last
    @lastevent.update_attributes!(:leave_time => Time.now)
end

使用javascript解决它:

$(window).on("navigate", function (event, data) {
  var direction = data.state.direction;
  if (direction == 'back') {
    <% update_method_helper %>
  }      
});

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

相关内容

  • 没有找到相关文章

最新更新