使用jQuery Mobile时,如何强制JavaScript在DELETE请求和后续页面加载后运行?
我正在使用Devise以及JQM和Rails。当用户注销(删除请求)时,Javascript不会在现已注销用户发送到的页面上运行。谷歌搜索之后,我发现jQuery Mobile在data-ajax=false
时会忽略data-method=delete
。
https://github.com/rails/jquery-ujs/issues/189 https://github.com/jquery/jquery-mobile/issues/2103
似乎没有在这个问题上取得进展。我的目标是在用户注销时很好地加载主页;我不在乎是通过data-ajax=false
还是其他方法。即使是笨重/昂贵的东西现在也没问题,因为我不希望用户经常退出。
有没有人知道解决方法?
我尝试了以下两个链接。两者都有相同的结果。
<li><%= link_to "SIGN OUT", destroy_user_session_path, :method => :delete, :rel => "external" %></li>
<li><a data-method="delete" rel="external" href="/users/sign_out" class="ui-link" data-ajax="false">SIGN OUT</a></li>
无论我尝试什么,JavaScript都不会运行。也许是相关的,在用户注销并显示主页后,URL栏会显示http://localhost:3000/users/sign_out
。我并不介意URL(尽管这并不理想);但我真的需要运行JavaScript。在所有其他链接中,我通过设置data-ajax=false
或:rel => external
来完成此操作;只有删除请求才是问题。
编辑:我自己的解决方法,受到@fortuity对this discussion的评论的启发。在config/initializers/devise.rb
中,我设置了config.sign_out_via = :get
。现在,退出请求是GET,一切(JS-wise)都可以。
我不认为这是一个答案,因为我仍然不知道是否/如何对DELETE请求做同样的事情。另外,我想知道是否有理由不使用此解决方法,并对此表示赞赏。