@ksk1234567890

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

devise機能を用いてのログアウトが出来ない

解決したいこと

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"  ←ここを記載

以上です。

0 likes

No Answers yet.

Your answer might help someone💌