3

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

=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 方法的信息?

谢谢

4

2 回答 2

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 = "/";
});
于 2012-05-04T22:24:54.853 回答
0

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

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

于 2012-05-04T22:31:24.010 回答