我正在尝试跟踪用户访问的页面以及用户访问和离开的时间。我通过遵循关于如何使用链接更改数据库值的建议,成功地存储了访问时间。流程如下:
- (在视图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 %>
}
});
将其用作分部,并在要使用它的每个页面中调用此分部(如果希望所有页面都在布局中使用它)。