目次
エラー経緯:「link_to」のPOSTでエラー発生
「Rails6」で「link_to」を使ってPOST処理しました。
<%= link_to("ログアウト", "/blog/user/logout", {method: "post", class: "nav-link"}) %>
するとPOSTしたページで以下のエラーが発生しました。
ActionController::InvalidAuthenticityToken in UsersController#logout
Rails6でPOSTしたらエラー発生
ActionController::InvalidAuthenticityToken
Extracted source (around line #211):
209
210
211
212
213
214
def handle_unverified_request
raise ActionController::InvalidAuthenticityToken
end
end
end
エラー解消:CSRFのトークンを出力
Railsなどのウェブフレームワークは、CSRF(クロスサイトリクエストフォージェリ)対策がされています。
よってPOST処理するには、CSRF対策をオフにするか、CSRFトークンを発行してそちらを利用する必要があります。
対策をオフにする必要はないので、トークンを発行しました。
post元のviewに、以下のタグを埋め込むだけでOKです
<%= csrf_meta_tags %>