36

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 要求のままになるようにする計画はありますか、または何らかの方法がありますか?

4

4 に答える 4

37

Rails 3でこれらのdata-属性を使用して行った変更は、優雅な劣化ではなく、控えめなJavaScriptに関するものでした。

Rails 2では:method => :delete、リンクを指定すると、入力が非表示のフォームを作成してフォームを送信する一連のインラインJavaScriptが生成されます。これは現在と同じです。JavaScriptをオフにすると、デフォルトでGETリクエストになります。そのため、JavaScriptがない場合のサポートは、以前と同じです。

1つのオプションは、リンクの代わりにフォーム/ボタンを使用することです。これにより、Rails 2 JavaScriptのように、メソッドを非表示フィールドとして含めることができます。もう1つのオプションは、GETバージョンで中間ページに移動し、その中間ページにフォーム/ボタンを表示することです。

新しいアプローチの利点は、目立たないことです。HTTP動詞を変更するためのJavaScriptは外部ファイルに存在し、data-属性を使用して、アタッチする必要のある要素を決定します。

于 2010-05-11T09:21:31.113 に答える
21

HTTPlink_toメソッドが. DELETE_ button_to_ 必要に応じて、CSS を使用してフォーム内のボタンのスタイルを設定し、リンクのように見せることができます。DELETEPOST

于 2011-05-18T21:19:54.240 に答える
4

唯一のチャンスは、フォームを定義することです。_method="delete" を含むリンクは、Javascript またはフォームを使用せずに POST にすることはできません。

于 2010-05-11T09:14:12.423 に答える