Rails 3は、Javascriptを目立たなくするためにいくつかの優れた機能を実行するため、次のような処理を実行しました。
= link_to "Logout", user_session_path, :method => :delete
..に変換します
<a href="/logout" data-method="delete" rel="nofollow">Logout</a>
しかし、それは私にちょうど起こりました..私がjavascriptをオフにすると、メソッドはもうDELETEではなく、期待どおりにGETになります。それで、これらを許可する計画はありますか、または許可する方法はありますかdata-
属性が正常に低下するため、リンクは引き続きDELETE要求ですか?
これらのdata-
属性を使用してRails 3で行った変更は、適切な劣化ではなく、控えめなJavaScriptに関するものでした。
Rails 2、リンクで:method => :delete
を指定すると、入力が非表示のフォームを作成してフォームを送信するインラインJavaScriptが大量に生成されます。これは、現在は、JavaScriptをオフにすると、デフォルトでGETリクエストになります。そのため、JavaScriptがない場合のサポートは、以前と同じです。
1つのオプションは、リンクの代わりにフォーム/ボタンを使用することです。これにより、Rails 2 JavaScriptのように、メソッドを非表示フィールドとして含めることができます。別のオプションは、GETバージョンを使用することです。フォーム/ボタンがある中間ページに移動します。
新しいアプローチの利点は、目立たないことです。 HTTP動詞を変更するためのJavaScriptは外部ファイルに存在し、data-
属性を使用してアタッチする要素を決定します。
HTTPメソッドがDELETE
であることを確認するためにJavaScriptを使用する必要があるlink_to
メソッドを使用するのではなく、button_to
メソッドを使用します。これにより、非表示のフォームが作成されます。 Rails HTTPメソッドをDELETE
ではなくPOST
として扱うように指示する入力要素。必要に応じて、CSSを使用してフォームのボタンのスタイルを設定できます。リンクのように見えます。
あなたが持っている唯一のチャンスはフォームを定義することです。リンクは、Javascriptなしで、またはフォームによって、POST with _method = "delete"にすることはできません。
Javascriptなしでは不可能です。
data-method
リンク属性を疑似非表示フォームに変換するための小さなjQueryプラグインを作成します(たとえば、laravelプロジェクトで使用)。