在Javascript重定向中包含HTTP方法?

时间:2012-05-03 21:02:49

标签: javascript ruby-on-rails redirect devise haml

在我的布局中,我有一个设计登录/退出链接,如下所示:

=if user_signed_in? then link_to "_", destroy_user_session_path, :method => :delete else link_to "_", new_user_session_path, :method => :get end

这使用rails帮助程序来构建链接,并解析为以下HTML:

<a data-method="get" href="/users/sign_in">_</a>

我正在将所有链接转换为按钮,并且已将URL传递给onClick函数以重定向浏览器。在这种情况下,我认为简单的重定向不会起作用,因为我需要指定HTTP方法。这是否是正确的方法,如果是这样,我如何告诉Javascript有关HTTP方法的信息?

谢谢

2 个答案:

答案 0 :(得分:2)

好的,我尝试过XMLHttpRequest,但无法让它工作。我最终做了这个,这有点像hacktastic,但它的确有效:

login = function(url) {
$.ajax({
    url: url,
    type: "GET"
}).done(function(){
    window.location.href = url; 
});

}

logout = function(url) {
$.ajax({
    url: url,
    type: "DELETE"
}).done(function(){
    window.location.href = "/";
});

答案 1 :(得分:0)

大多数浏览器不支持HTTP动词的全部色域。因此,Rails使用隐藏变量来指定预期的HTTP方法。

您需要更新<input type="hidden" name="_method" ... />字段以更改Rails在RESTful路由期间使用的HTTP谓词。