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

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

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

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

0回答

844閲覧

devise機能からログアウトが出来ない。

ksk_123

総合スコア0

Ruby on Rails 6

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2022/06/21 07:21

編集2022/06/21 11:33

devise機能を使用したログアウトのエラーを解決したい

初投稿です。どうしても解らないことがあり、投稿させていただきました。

Ruby on Railsにて画像投稿ができるWebアプリをつくっています。
bootstrap5と併用して、ユーザー管理機能を実装している際に、ログアウトを試してみるとエラーが発生しました。
いろいろな記事を参考にしましたが、解決できず。解決方法を教えて下さい。

発生している問題・エラー
Routing Error
No route matches [GET] "/users/sign_out,%20method:%20:delete"
Rails.root: /Users/admin/projects/recette

Application Trace | Framework Trace | Full Trace
Routes
Routes match in priority from top to bottom
※Recetteはアプリ名です。

また、localhost:3000/に接続する際には
ActionController::RoutingError (No route matches [GET] "/assets/dist/js/bootstrap.bundle.min.js"):とエラーがターミナルに出ている状況です。

該当するソースコード

<div class="col-sm-4 offset-md-1 py-4"> <h4 class="text-white">Contact</h4> <ul class="list-unstyled"> <% if user_signed_in? %> <li><a><%= link_to current_user.nickname, "#", class:"text-white" "user-nickname" %></li> <li><a href="/users/sign_out, method: :delete" class="text-white">ログアウト</a></li> <% else %> <li><a href="/users/sign_in" class="text-white">ログイン</a></li> <li><a href="/users/sign_up" class="text-white">新規登録</a></li> <% end %> </ul> </div>

<a href=
の後に

<%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
の記述がうまくできなかったので、/users/sign_out, method: :delete" としてあります。
サインインや新規登録も同様です。
こちらもLink_toを使用した記述があればご教授いただきたいです。

自分で試したこと
まず、エラーがGetなのが何故?となったので
rails routesにてルーティングの再確認。

Prefix Verb URI Pattern Controller#Action new_user_session GET /users/sign_in(.:format) devise/sessions#new user_session POST /users/sign_in(.:format) devise/sessions#create ここ→ destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy new_user_password GET /users/password/new(.:format) devise/passwords#new edit_user_password GET /users/password/edit(.:format) devise/passwords#edit user_password PATCH /users/password(.:format) devise/passwords#update PUT /users/password(.:format) devise/passwords#update POST /users/password(.:format) devise/passwords#create cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel new_user_registration GET /users/sign_up(.:format) devise/registrations#new edit_user_registration GET /users/edit(.:format) devise/registrations#edit user_registration PATCH /users(.:format) devise/registrations#update PUT /users(.:format) devise/registrations#update DELETE /users(.:format) devise/registrations#destroy POST /users(.:format) devise/registrations#create

〜略〜

サインアウトはDeleteのままで合っていました。

参考にした記事
https://qiita.com/katsuomi/items/ed1b89f96e89f8c30f33
https://qiita.com/ro-ze1106/items/082d8e78b455cd3a7055

app/assets/javascript/application.jsに

require("@rails/ujs").start() require("turbolinks").start() require("@rails/activestorage").start() require("channels") import "bootstrap" ←追記 import "../stylesheets/application" ←追記

してみてもエラー。
Bootstrapの導入の際の手順としては
1.

% yarn add bootstrap@next

で、Verは5.1.0を選択。
2.
続いて

% yarn add @popperjs/core

にてBootstrapが使用するpopper.jsを導入しました。
3.app/javascript/packs/application.js を読み込むための記載を、application.html.erbにおこないました。

<html> <head> <title>アプリケーション名</title> <%= csrf_meta_tags %> <%= csp_meta_tag %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> ←この部分 <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> </head> <body> <%= yield %> </body> </html>

4.app/javascript/stylesheetsというディレクトリを作成します。
作成後、上記stylesheetsディレクトリの直下にapplication.scssファイルを作成し、application.scssに、bootstrapを読み込むための記載を行いました。

app/javascript/stylesheets/application.scss

@import "bootstrap"

5.application.jsにて、bootstrapとapplication.scssを読み込むための記載を行いました。
app/javascript/packs/application.js

require("@rails/ujs").start() require("turbolinks").start() require("@rails/activestorage").start() require("channels") import "bootstrap"  ←ここと import "../stylesheets/application"  ←ここを記載

以上です。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問