前回updateアクションの時、送信されているhtmlリクエストがPOST
だったのを確認したので、
destroyアクションではどうなのか確認してみた。
#実際に確認
Noticeというモデルがあるとする。
indexページから
①button_to
で削除する場合と
②link_to
で削除する
パターンを見たいので以下のような見た目になった
↓(左が削除ボタン、右が削除リンク)
###view テンプレート
・
・
<% @notices.each do |notice| %>
<tr>
〜〜〜略〜〜〜
<td><%= button_to "削除", notice_path(notice),
class: 'btn',
method: :delete %>
</td>
<td>
<%= link_to "削除", notice_path(notice), method: :delete %>
</td>
</tr>
<% end %>
・
・
###HTML
右クリック→ページのソースを表示
で見てみると。
①削除ボタン
<td><form class="button_to" method="post" action="/notices/14">
<input type="hidden" name="_method" value="delete" /><input class="btn" type="submit" value="削除" /><input type="hidden" name="authenticity_token" value="bvoKobmo3Zvj6jysAJAmuxv49+WX+EqiG+bBSqWibDm9+lc44shUlU3mAau9H6WGR5z7rucUmICmobTOplLT0w==" /></form>
</td>
②削除リンク
<td>
<a rel="nofollow" data-method="delete" href="/notices/14">削除</a>
</td>
①削除ボタンはupdateの時と同様、mothod="post"
であるが、_method
パラメータでdeleteを指定している。
②削除リンクは data-method="delete"
という属性だけ付与されている。
#Wiresharkでキャプチャー
リアルなhttpパケットを見てみます。
こちらもupdateの時と同様、実際に送信しているhttpリクエストは**POST
**メソッドだが、Form item: "_method" = "delete"
となっている。
###②削除リンク
こちらも①のパターンと全く同じように見える。
つまり**data-method="delete"
**属性だけで_method
パラメーターが使えるようである。
#疑問に思ったこと
最終的なhttpリクエストの振る舞いが同じになるのであれば、①もdata-method="delete"
属性だけにすれば良いのではないのか?