質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
DELETE

ファイルシステムからファイル、データベースからレコードを削除することまたはメモリ内のオブジェクトの割り当てを取り消すことをさします。もしくは、HTTPプロトコルのDELETEを指すこともあります。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

751閲覧

AWSを使ってデプロイしたアプリケーションでmethod: :deleteがうまく機能するようにしたい

yg4yoYYLOO7pqB9

総合スコア2

DELETE

ファイルシステムからファイル、データベースからレコードを削除することまたはメモリ内のオブジェクトの割り当てを取り消すことをさします。もしくは、HTTPプロトコルのDELETEを指すこともあります。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/10/26 02:25

編集2021/10/26 10:36

前提・実現したいこと

使用技術
Rails6.0.3
Ruby 2.6.3p62
実現したいこと
AWS、Nginx、Pumaを使ってデプロイしたアプリケーションで投稿削除やログアウトをしたい。

発生している問題・エラーメッセージ

ActionController::RoutingError (No route matches [GET] "/logout"):

ec2サーバー上でsudo tail -f log/production.logを実行した結果です

[2021-10-26T10:33:48.373111 #26769] INFO -- : [1860493b-41b3-4d0f-9b7e-e62894e7414d] Started GET "/logout" for 180.149.181.188 at 2021-10-26 10:33:48 +0000 F, [2021-10-26T10:33:48.373638 #26769] FATAL -- : [1860493b-41b3-4d0f-9b7e-e62894e7414d] [1860493b-41b3-4d0f-9b7e-e62894e7414d] ActionController::RoutingError (No route matches [GET] "/logout"): [1860493b-41b3-4d0f-9b7e-e62894e7414d] [1860493b-41b3-4d0f-9b7e-e62894e7414d] actionpack (6.0.3) lib/action_dispatch/middleware/debug_exceptions.rb:36:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] actionpack (6.0.3) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] railties (6.0.3) lib/rails/rack/logger.rb:37:in `call_app' [1860493b-41b3-4d0f-9b7e-e62894e7414d] railties (6.0.3) lib/rails/rack/logger.rb:26:in `block in call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] activesupport (6.0.3) lib/active_support/tagged_logging.rb:80:in `block in tagged' [1860493b-41b3-4d0f-9b7e-e62894e7414d] activesupport (6.0.3) lib/active_support/tagged_logging.rb:28:in `tagged' [1860493b-41b3-4d0f-9b7e-e62894e7414d] activesupport (6.0.3) lib/active_support/tagged_logging.rb:80:in `tagged' [1860493b-41b3-4d0f-9b7e-e62894e7414d] railties (6.0.3) lib/rails/rack/logger.rb:26:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] actionpack (6.0.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] actionpack (6.0.3) lib/action_dispatch/middleware/request_id.rb:27:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] rack (2.2.3) lib/rack/method_override.rb:24:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] rack (2.2.3) lib/rack/runtime.rb:22:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] activesupport (6.0.3) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] actionpack (6.0.3) lib/action_dispatch/middleware/executor.rb:14:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] rack (2.2.3) lib/rack/sendfile.rb:110:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] actionpack (6.0.3) lib/action_dispatch/middleware/host_authorization.rb:76:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] railties (6.0.3) lib/rails/engine.rb:527:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] puma (4.3.6) lib/puma/configuration.rb:228:in `call' [1860493b-41b3-4d0f-9b7e-e62894e7414d] puma (4.3.6) lib/puma/server.rb:713:in `handle_request' [1860493b-41b3-4d0f-9b7e-e62894e7414d] puma (4.3.6) lib/puma/server.rb:472:in `process_client' [1860493b-41b3-4d0f-9b7e-e62894e7414d] puma (4.3.6) lib/puma/server.rb:328:in `block in run' [1860493b-41b3-4d0f-9b7e-e62894e7414d] puma (4.3.6) lib/puma/thread_pool.rb:134:in `block in spawn_thread'

該当のソースコード

ruby

1<%= link_to "ログアウト", logout_path, method: :delete, data: { confirm: "本当にログアウトしますか?" }, style: "color: #ff4f4f; display: block; padding: 0.5rem 1rem;" %>

js

1require("@rails/ujs").start() 2require("turbolinks").start() 3require("@rails/activestorage").start() 4require("channels") 5require('jquery')

ログアウト処理のコントローラ

def destroy log_out if logged_in? redirect_to root_path end

log_outメソッド

def log_out forget(current_end_user) session.delete(:end_user_id) @current_end_user = nil end

試したこと

投稿削除やログアウトといったhttpリクエストがdeleteのものが全てうまくいかないことから、method::deleteがうまく機能してないと考えた。このmethod: :deleteはrails-ujsが機能を担っているので、rails-ujsに関する記事をあたってみましたがapplication.jsなどのファイルに原因は見つかりませんでした。ec2サーバーにsshでログインした上でbundleのインストールや、アッセトプリコンパイル、マイグレーションなどは全て実行しました。これらの部分でエラーは発生していません。もちろんローカルではmethod: :deleteの部分やルーティングはしっかり機能しており問題はありません。ずっと手が止まってしまっているのでお助けいただけると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/10/26 02:40

ブラウザコンソールにエラーなどは出ていませんか?
yg4yoYYLOO7pqB9

2021/10/26 03:31

ブラウザコンソールには logout:1 Failed to load resource: the server responded with a status of 404 (Not Found) というエラーが出ています。
satoshih

2021/10/26 10:05

Controllerのログアウトの処理を載せていただけますか? あと、Railsのログのdelete logout リクエストからエラーまでのログがみれると助かります
yg4yoYYLOO7pqB9

2021/10/26 10:19

了解しました。質問の方を編集します!
guest

回答1

0

ベストアンサー

外部からのアクセスの場合link_toメソッドのdeleteはCSRFトークンのチェックで弾かれるようですね
なぜかGetリクエストになるようです。
logoutのアクションのみCSRFトークンのチェックを無効化するか、
button_toに変更するか、
リクエスト時に一緒にCSRFトークンを投げる必要がありそうです。

参考記事: https://qiita.com/mami3sansan/items/6a9710b3ffdc937aa5f3

投稿2021/10/27 01:24

satoshih

総合スコア799

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yg4yoYYLOO7pqB9

2021/10/27 10:46

protect_from_forgery :except => [:top] ユーザーログアウトの画面を開くアクションはtopアクションだったためtopのみをexceptにすることで解決すると考え、書き加えたところ解決しました。しかし上記の記述1行で何故かその他のアクションによって開かれるviewのログウトボタンまでしっかりdeleteメソッドが有効になっていました。この原因がわからず少し歯に物が詰まった状態での解決でしたが助かりました!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問