[英]Calling a rails controller method with jQuery on “beforeunload”
当用户离开页面时,我想在我的控制器中调用一个方法。 理想情况下,我还想传递几个参数。
这就是我所拥有的。 不确定我是否正确处理参数并且从不调用我的leave方法。
<script language="javascript">
$(window).bind('beforeunload', function() {
$.get('/leave?foo='+<%= @bar %>, null, null, null)
});
</script>
match '/leave' to: 'posts#leave'
def leave
puts params[:bar]
end
注意:将link_to
直接放到/leave
可以正常工作并用return true;
替换jQuery $.get
return true;
当用户试图离开时抛出一个对话框。
很接近。 假设您的参数类似于:
foo=bar
你的jQuery get变成了:
$.get('/leave?foo=bar', null, null, null)
你的路由没有抛出语法错误(抱歉,Rails改变了每个主要版本的路由,所以也许这适用于Rails 2.x但它不在3.x上)。 代替:
match '/leave' to: 'posts#leave'
采用...
match '/leave' => 'posts#leave'
在你的控制器中:
def leave
puts params[:foo]
end
或者,如果您只是想测试参数的存在:
def leave
puts params.include?(:foo)
end
我使用不引人注目的JS解决了这个问题。 在我的一个Coffeescript文件中,我把:
jQuery ->
$(window).on('beforeunload', ->
$.get('/leave?foo=bar', null)
return "Bye!")
我想在没有警报的情况下这样做,但除非我返回一些内容,否则GET不起作用。 很奇怪,但这是一个单独的问题。
谢谢你的帮助,马克。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.