2

私がする時:

http://localhost:3000/signout

それは言います:

No route matches [GET] "/signout"

これは、ルート構成ファイルに次のものがあるためです。

match '/signout', to: 'sessions#destroy', via: :delete

私の質問は、URLを介して「削除」リクエストを送信できるかどうかです。リンクを押す代わりに:

<%= link_to "Sign out", signout_path, :method => :delete %>

URL 経由でアクションを模倣できます。

4

3 に答える 3

0

あまり。HTTP 仕様の一部ですが、ほとんどすべての Web ブラウザーは、作成方法と要求DELETE方法しか知りません。メソッドでa をクリックすると、Rails は実際にその場でフォームを作成し、それをサーバーに「POST」します。ソースコードを見てください。GETPOSTlink_to:delete

于 2012-06-03T13:35:37.600 に答える
0

ブラウザで を指定すると、どのルートとも一致しないリクエストhttp://localhost:3000/signoutが生成されます。GET

<%= link_to "Sign out", signout_path, :method => :delete %>代わりにによって生成されたリンクをクリックすると、必要にDELETE応じてリクエストが取得されます。つまり、コードは機能します。

このルートで他の方法を使用していない場合は、次のようにリファクタリングすることを検討してください。

delete '/signout', to: 'sessions#destroy'

編集:Railsの場合、DELETEリクエストは単なるPOSTリクエストであり、パラメータ_methodが に設定されていることに注意してください'delete'

于 2012-06-03T19:22:49.733 に答える
-1
match ':controller(/:action(/:id))(.:format)'

最後にあるルーターでこれを無効にして、一度試してください。

于 2012-06-03T07:09:00.703 に答える