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

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

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

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

Ruby

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

Q&A

1回答

279閲覧

rails ログアウト機能エラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Ruby

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

0グッド

0クリップ

投稿2018/10/11 21:02

rails tutorialに従ってログアウト機能を実装しましたが、No route matches [GET] "/logout"
というエラーが出てしまいます。

applicationjs

1//= require rails-ujs 2//= require turbolinks 3//= require_tree . 4//= require bootstrap 5//= require jquery 6//= require bootstrap-sprockets 7//= require jquery_ujs

sessionhelper

1def logout 2 session.delete(:user_id) 3 @current_user = nil 4 end

sessioncontroller

1def destroy 2 log_out 3 redirect_to root_url 4 end

applicationhtml

1<head> 2 <%= csrf_meta_tags %> 3 <%= stylesheet_link_tag 'application', media: 'all', 4 'data-turbolinks-track': 'reload' %> 5 <%= javascript_include_tag 'application', 6 'data-turbolinks-track': 'reload' %>

headerhtml

1<li> 2<%= link_to "Log out", logout_path, method: :delete %> 3</li>

一通りのコードは見直しましたが、わかりませんでした。どなたか解決方法を教えてください

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

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

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

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

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

guest

回答1

0

No route matches [GET] "/logout"
"/logout"というURLへのGETリクエストに対応するルーティングがないというエラーです。
ルーティングがきちんと設定されているか確認してみてください。
設定されているルーティングは$ rails routeで確認できます。

投稿2018/10/12 00:40

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/10/12 03:04

delete "logout"=>"sessions#destroy" ログアウトのルーティングはこのように設定しているのですが、これは間違いでしょうか?
退会済みユーザー

退会済みユーザー

2018/10/12 03:08

それが間違いかどうかというより <%= link_to "Log out", logout_path, method: :delete %> が、ちゃんとそのアクションへ飛んでいるのかどうかがエラー解決の鍵な気がします。
退会済みユーザー

退会済みユーザー

2018/10/12 03:13

すみません、どうすればいいか教えていただけると助かります
退会済みユーザー

退会済みユーザー

2018/10/12 03:22

ではroutes.rbとrails routeの実行結果を追記してもらっていいですか?
退会済みユーザー

退会済みユーザー

2018/10/12 03:28

routes.rb Rails.application.routes.draw do get '/signup'=>"users#new" get "login"=>"sessions#new" post "login"=>"sessions#create" delete "logout"=>"sessions#destroy" resources :users end $ rails routes Prefix Verb URI Pattern Controller#Action signup GET /signup(.:format) users#new login GET /login(.:format) sessions#new POST /login(.:format) sessions#create logout DELETE /logout(.:format) sessions#destroy users GET /users(.:format) users#index POST /users(.:format) users#create new_user GET /users/new(.:format) users#new edit_user GET /users/:id/edit(.:format) users#edit user GET /users/:id(.:format) users#show PATCH /users/:id(.:format) users#update PUT /users/:id(.:format) users#update DELETE /users/:id(.:format) users#destroy このような形になりました。
退会済みユーザー

退会済みユーザー

2018/10/12 03:32

sessions#destroyのアクションを見せてもらっていいですか?
退会済みユーザー

退会済みユーザー

2018/10/12 03:33

すみませんありましたね
退会済みユーザー

退会済みユーザー

2018/10/12 03:40

再現してみたんですがDLETEリクエストで問題なく動作します。 GETリクエストになっているってことは method: :delete が機能してないんだと思うんですが method: :deleteの前のスペースが全角だったりしませんか?
退会済みユーザー

退会済みユーザー

2018/10/12 03:53

確認してみます!
退会済みユーザー

退会済みユーザー

2018/10/12 03:55

先ほどと変わらず、動作しませんでした・・・
退会済みユーザー

退会済みユーザー

2018/10/12 04:24

再現が得られないのでちょっとわからないですね、 あと考えられるのは、jQueryが読み込まれてないとかですかね。
退会済みユーザー

退会済みユーザー

2018/10/12 06:21

ありがとうございます。色々試しましたが動かなかったので、とりあえず放置することにいたします。 ご丁寧な回答・解説ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問