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

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

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

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

Ruby on Rails

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

Q&A

1回答

2835閲覧

ログアウトが正常にできない(No route matches [GET] "/logout" エラー)

takuma_lol

総合スコア0

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/05/07 06:53

前提・実現したいこと

railsチュートリアル9章に取り組んでいるのですが、logoutボタンからログアウトを行うとルーティングエラーが発生します。
ルーティングやlink_toの書き方も確認したのですが、問題はなさそうです(検証ツールを使うと、htmlではmethodは正しくdeleteになっていました)。

いろいろと試行錯誤はしたのですが(「試したこと」に下述します)うまくいかず、もはや万策尽きてしまったので質問させていただきました。
程度の低い質問であったら大変申し訳ありません。

また、回答に必要な情報が不足している場合、恐縮ですがご指摘ください。随時追記いたします。

よろしくお願いいたします。

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

logoutボタンからログアウトを行うと

No route matches [GET] "/logout"

このエラーが発生する。

該当のソースコード

ruby

1[routes.rb] 2Rails.application.routes.draw do 3 4 get 'users/new' 5 root 'static_pages#home' 6 get '/help', to: 'static_pages#help' 7 get '/about', to: 'static_pages#about' 8 get '/contact', to: 'static_pages#contact' 9 get '/signup', to: 'users#new' 10 get '/login', to: 'sessions#new' 11 post '/login', to: 'sessions#create' 12 delete '/logout', to: 'sessions#destroy' 13 resources :users 14 15end

HTMLerb

1[_header.html.erb(パーシャルです)] 2<header class="navbar navbar-fixed-top navbar-inverse"> 3 <div class="container"> 4 <%= link_to "sample app", root_path , id: "logo" %> 5 <nav> 6 <ul class="nav navbar-nav navbar-right"> 7 <li><%= link_to "Home", root_path %></li> 8 <li><%= link_to "Help", help_path %></li> 9 <% if logged_in? %> 10 <li><%= link_to "Users", '#' %></li> 11 <li class="dropdown"> 12 <a href="#" class="dropdown-toggle" data-toggle="dropdown"> 13 Account <b class="caret"></b> 14 </a> 15 <ul class="dropdown-menu"> 16 <li><%= link_to "Profile", current_user %></li> 17 <li><%= link_to "Settings", '#' %></li> 18 <li class="divider"></li> 19 <li> 20 <%= link_to "Log out", logout_path, method: :delete %> 21 </li> 22 </ul> 23 </li> 24 <% else %> 25 <li><%= link_to "Log in", login_path %></li> 26 <% end %> 27 </ul> 28 </nav> 29 </div> 30</header>
ソースコード

試したこと

[1]
https://teratail.com/questions/164311
こちらの質問を参考にしてjQueryを導入しました。
=>失敗(jQueryが正常に動いていることは確認済みです。)

[2]
https://teratail.com/questions/336403
この質問をした際に頂いた回答の通り、rails-ujsを導入しました。
=>失敗

[3]
html.erbのlink_tobutton_toに変更しました
=>失敗

[4]
{method: :delete}のように{}をつけろという旨の記事を見つけたため、実践しました。
=>失敗

[5]
rails serverの再起動を行いました。
=>失敗

[6]
deleteメソッドをgetメソッドに変更しました。
=>ログアウト自体は成功したのですが、その後発生した別のエラーの原因であると推察したため、やはりdeleteメソッドのままログアウトを成功させることが必須であると判断しました。

補足情報(FW/ツールのバージョンなど)

ruby 2.6.3
rails 6.0.3
aws cloud9を使用

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

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

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

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

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

m.ts10806

2021/05/07 07:58

いっそgetでいいのでは
takuma_lol

2021/05/07 10:14

一度getにしたまま教材を進めたのですがその後エラーに直面し、deleteでなくgetに設定していることがそのエラーの原因であると思われたので、なんとかdeleteで進めたいと考えております... コメントありがとうございます。
guest

回答1

0

rails-ujsの導入方法がRails5のそれなのが気になります。

そもそもyarnは導入済みでしょうか?

rails new時に導入されていなかった場合、環境構築が中途半端になりますので
rails webpacker:installが必要になります。

投稿2021/05/07 08:04

asm

総合スコア15147

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

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

takuma_lol

2021/05/07 10:24

回答ありがとうございます。 yarnの再導入を行いましたが、導入されていたようです。 rails webpacker:install も試してみましたが、改善は見られませんでした... rails-ujsの導入方法についてですが、application.jsとGemfileに必要事項を追加し、bundle installしました。ソースコードを下述いたします。 ```javascript (app/assets/javascripts/application.js) //= require jquery //= require jquery_ujs //= require rails-ujs //= require turbolinks //= require_tree . ``` ```Gemfile source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } gem 'rails', '6.0.3' gem 'bcrypt', '3.1.13' gem 'bootstrap-sass', '3.4.1' gem 'puma', '4.3.6' gem 'sass-rails', '5.1.0' gem 'webpacker', '~> 6.x' gem 'turbolinks', '5.2.0' gem 'jbuilder', '2.9.1' gem 'bootsnap', '1.4.5', require: false gem 'jquery-rails' gem 'jquery-ui-rails' gem 'rails-ujs' group :development, :test do gem 'sqlite3', '1.4.1' gem 'byebug', '11.0.1', platforms: [:mri, :mingw, :x64_mingw] end group :development do gem 'web-console', '4.0.1' gem 'listen', '3.1.5' gem 'spring', '2.1.0' gem 'spring-watcher-listen', '2.0.1' end group :test do gem 'capybara', '3.28.0' gem 'selenium-webdriver', '3.142.4' gem 'webdrivers', '4.1.2' gem 'rails-controller-testing', '1.0.4' gem 'minitest', '5.11.3' gem 'minitest-reporters', '1.3.8' gem 'guard', '2.16.2' gem 'guard-minitest', '2.4.6' end group :production do gem 'pg', '1.1.4' end ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問