在我的布局中,我有一个设计登录/退出链接,如下所示:
=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方法的信息?
谢谢
答案 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谓词。