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>

すべてのリンクをボタンに変換し、onClick 関数に URL を渡してブラウザをリダイレクトしました。この場合、HTTP メソッドを指定する必要があるため、単純なリダイレクトではうまくいかないと思います。これはこれを行う正しい方法ですか?もしそうなら、HTTPメソッドについてJavascriptに伝えるにはどうすればよいですか?

ありがとうございました

4

2 に答える 2

2

OK、XMLHttpRequest を試しましたが、うまくいきませんでした。私はこれをやってしまいました。これは一種のハックですが、うまくいきます:

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 に答える