4

Rails で DELETE リンクを作成する場合は、次のコードを記述します (この例では、Devise でユーザー セッションを削除します)。

<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>

これは、次の HTML に変わります。

<a rel="nofollow" data-method="delete" href="/users/sign_out">Logout</a>

その HTML を静的な HTML ページに単純に配置できないことを除けば、うまく機能します。GET リクエストを実行するだけです。Rails には、上記のリンクを実際に DELETE リクエストを実行するものに変えるための標準 Javascript が含まれていると思います。では、DELETE アクションを実行する Rails リソースへのリンクを静的 HTML ページに配置する適切な方法は何でしょうか? Javascript Railsがこれを行うすべてのWebページに含まれていることを見つけてつかむ必要がありますか? より良い方法はありますか?

4

3 に答える 3

6

DELETE残念ながら、アンカー リンクを使用してリクエストを送信することはできません。従来のアンカー リンクはGETリクエストのみを送信します。実際、本当のDELETEリクエストを送ることはまったくできません。JavaScript を使用せずに削除リンクを作成する場合、解決策はかなり簡単です。2.4 PUT または DELETE メソッドを含むフォームはどのように機能するかを確認してください。公式ドキュメントで。基本的に、リソースの URL に送信するフォームをdelete. とてもシンプルで、仕事を成し遂げるために JavaScript に頼る必要はありません。これが役に立てば幸いです。幸運を祈ります。

于 2012-11-03T04:37:21.477 に答える
3

私の同僚の何人かは、ユーザーがブラウザーで JavaScript を有効にしていない可能性があるネイティブ アプリで作業しているため、そのような場合、削除リンクは機能せず、削除の代わりに表示ページを取得します....ユーザーがブラウザーで JS を有効にしているかどうかがわからない場合は、GET または POST メソッドを使用して、コントローラーの削除アクションへのルートをいつでも生成できます...このアプローチは、静的 HTML ページでも機能します。 ..

于 2012-11-03T05:08:01.060 に答える
3

Rails は JavaScript を使用してdeleteリンクを処理します。

data-method非表示のフォームを作成し、属性を持つリンクをクリックすると送信します"delete"

https://github.com/rails/jquery-ujs/blob/master/src/rails.jshandleMethodをご覧ください

静的ページの削除リンクは、rails.js(jQuery を使用している場合) 含めると機能する可能性があります。そうでない場合は、自分でフォームを作成することができhandleMethodます。

于 2012-11-03T04:22:46.320 に答える