分からないこと
railsでdeviseというgemをインストールし作成したUserモデルを使用し、ユーザのログイン/ログアウト機能を実現したいと考えております。しかし、ログアウトボタンを押すと、ルーティングの際にgetメソッドが呼ばれているようで、そんな画面はないとエラーが出ています。解決策が分からないので質問させていただきました。
エラー内容
Routing Error
No route matches [GET] "/users/sign_out"
関連ソース
ERB
1<%# _header.html.erb %> 2<nav class="navbar navbar-default"> 3 <div class="container"> 4 <div class="navbar-header"> 5 <button type="button" class="navbar-toggle collapseddata-toggle="collapse" data-target="#navigation"> 6 <span class="icon-bar"></span> 7 <span class="icon-bar"></span> 8 <span class="icon-bar"></span> 9 </button> 10 <%# deviseでヘルパーとして追加されたuser_signed_in?メソッドを使用する %> 11 <% if user_signed_in? %> 12 <a class="navbar-brand" href="/">ブログ</a> 13 <%= link_to '新規作成', new_article_path %> 14 <%= link_to 'ログアウト', destroy_user_session_path, method: :delete %> 15 <% else %> 16 <a class="navbar-brand" href="/">新規ユーザさんのページ</a> 17 <%= link_to 'ユーザ登録', new_user_registration_path %> 18 <%= link_to 'ログイン', new_user_session_path %> 19 <% end %> 20 </div> 21 22 <%# 右側に表示するログインユーザの名前 %> 23 <div class="collapse navbar-collapse" id="navigation"> 24 <p class="navbar-text navbar-right"></p> 25 </div> 26</nav>
ERB
1<%# application.html.erb %> 2<!DOCTYPE html> 3<html> 4 <head> 5 <title>Blog</title> 6 <%= javascript_pack_tag 'application' %> 7 <%= csrf_meta_tags %> 8 <%= csp_meta_tag %> 9 <%= stylesheet_pack_tag 'application', 'data-turbolinks-track': 'reload' %> 10 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 11 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 12 </head> 13 14 <body> 15 16 <%= render 'layouts/header'%> 17 18 <%# 新規登録やログイン時にメッセージ表示 %> 19 <p class="notice"><%= notice %></p> 20 <p class="alert"><%= alert %></p> 21 22 <%= yield %> 23 </body> 24</html>
Ruby
1# Routes.rb 2Rails.application.routes.draw do 3 devise_for :users 4 resources :articles 5 root 'articles#index' 6 7 # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html 8end
javascript
1// application.js 2// This file is automatically compiled by Webpack, along with any other files 3// present in this directory. You're encouraged to place your actual application logic in 4// a relevant structure within app/javascript and only use these pack files to reference 5// that code so it'll be compiled. 6 7require("@rails/ujs").start() 8require("turbolinks").start() 9require("@rails/activestorage").start() 10require("channels") 11 12 13// Uncomment to copy all static images under ../images to the output folder and reference 14// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>) 15// or the `imagePath` JavaScript helper below. 16// 17// const images = require.context('../images', true) 18// const imagePath = (name) => images(name, true) 19 20// Bootstrapのための追記 21import 'bootstrap'; 22import '../stylesheets/application'; 23 24
実施してみたこと
deviseを使うのに参考にした記事
回答1件
あなたの回答
tips
プレビュー