🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

Ruby on Rails

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

Q&A

1回答

615閲覧

ruby ログアウト機能

kakedashi

総合スコア4

Ruby

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

Ruby on Rails

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

0グッド

1クリップ

投稿2019/09/12 02:37

前提・実現したいこと

rubyで簡易なブログアプリを作成しています

ログアウトの機能を実装中です

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

該当のソースコード

application.html.erb

1 <%= link_to "ログアウト", destroy_user_session_path, method: :delete %>

routes.rb

1 Rails.application.routes.draw do 2 root "messages#index" 3 resources :messages 4 resources :users 5 devise_for :users 6end

rake.routes

1 Prefix Verb URI Pattern Controller#Action 2 new_user_session GET /users/sign_in(.:format) devise/sessions#new 3 user_session POST /users/sign_in(.:format) devise/sessions#create 4 destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy 5 new_user_password GET /users/password/new(.:format) devise/passwords#new 6 edit_user_password GET /users/password/edit(.:format) devise/passwords#edit 7 user_password PATCH /users/password(.:format) devise/passwords#update 8 PUT /users/password(.:format) devise/passwords#update 9 POST /users/password(.:format) devise/passwords#create 10 cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel 11 new_user_registration GET /users/sign_up(.:format) devise/registrations#new 12 edit_user_registration GET /users/edit(.:format) devise/registrations#edit 13 user_registration PATCH /users(.:format) devise/registrations#update 14 PUT /users(.:format) devise/registrations#update 15 DELETE /users(.:format) devise/registrations#destroy 16 POST /users(.:format) devise/registrations#create 17 root GET / messages#index 18 messages GET /messages(.:format) messages#index 19 POST /messages(.:format) messages#create 20 new_message GET /messages/new(.:format) messages#new 21 edit_message GET /messages/:id/edit(.:format) messages#edit 22 message GET /messages/:id(.:format) messages#show 23 PATCH /messages/:id(.:format) messages#update 24 PUT /messages/:id(.:format) messages#update 25 DELETE /messages/:id(.:format) messages#destroy 26 users GET /users(.:format) users#index 27 POST /users(.:format) users#create 28 new_user GET /users/new(.:format) users#new 29 edit_user GET /users/:id/edit(.:format) users#edit 30 user GET /users/:id(.:format) users#show 31 PATCH /users/:id(.:format) users#update 32 PUT /users/:id(.:format) users#update 33 DELETE /users/:id(.:format) users#destroy

試したこと

ログアウトボタンを押してもurlがusers/sign_outとなるだけでビューが下記のように
サインインと新規登録ボタンのあるページに遷移させたいので、
教えて欲しいです。

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

application.html.erb

1 <% if user_signed_in? %> 2 <div class="user_nav gird-6"> 3 <ul id="nav-mobile" class="right hide-on-med-and-down"> 4 <li> 5 <a href="/messages/new">投稿</a> 6 </li> 7 <li> 8 <%= link_to "ログアウト", destroy_user_session_path, method: :delete %> 9 </li> 10 </div> 11 <% else %> 12 <div class="gird-6"> 13 <ul id="nav-mobile" class="right hide-on-med-and-down"> 14 <li><%= link_to "サインイン", new_user_session_path, class: "post" %></li> 15 <li><%= link_to "新規登録", new_user_registration_path, class: "post" %></li> 16 </ul> 17 </div> 18 <% end %>

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

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

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

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

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

guest

回答1

0

UsersControllerのsign_outで遷移させたいところへredirectを入れてみてはいかがでしょうか

投稿2019/09/12 02:46

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kakedashi

2019/09/12 03:19

回答ありがとうございます! 回答頂いた通りに、root_pathを入れてみました。 ヘッダー部分は表示されましたが、メッセージが表示されず、 また、サインアウトできておらず、サインインと新規登録のボタンが表示されませんでした。
退会済みユーザー

退会済みユーザー

2019/09/12 04:03

UsersControllerのsign_outのプログラムを見せてもらえますか?
kakedashi

2019/09/12 04:07

```users_controller class UsersController < ApplicationController def show end def sign_out redirect_to root_path end end ```
退会済みユーザー

退会済みユーザー

2019/09/12 04:35

>> ヘッダー部分は表示されましたが、メッセージが表示されず UsersControllerのsign_outにメッセージを出すようなものが見当たらないです。 どこか他でメッセージを出すようにしているのであれば、そこのプログラムを見せてもらえますか? >> サインアウトできておらず どのような情報をもってuser_signed_in?と判断していますか? sign_outでその値をnilにするなどサインインする方法によりますが、指定する必要があります。 >> サインインと新規登録のボタンが表示されませんでした。 こちらはredirectで指定してあるroot_pathのviewに記載していないのが原因かと思われます。
kakedashi

2019/09/12 05:10

root_path先のビューです <div class="content"> <%= render @messages %> <h5 class="center-align"> <ul class="pagination"> <li class="disabled"><a href="#!"><i class="material-icons"></i></a></li> <li class="active"><a href="#!">1</a></li> <li class="waves-effect"><a href="#!">2</a></li> <li class="waves-effect"><a href="#!">3</a></li> <li class="waves-effect"><a href="#!">4</a></li> <li class="waves-effect"><a href="#!">5</a></li> <li class="waves-effect"><a href="#!"><i class="material-icons"></i></a></li> </ul> </h5> </div>
kakedashi

2019/09/12 05:13

コピペをしたらインデントが無くなってます。すみません 部分テンプレート先です <div class="row"> <div class="col s12 m6 offset-m3"> <div class="card blue darken-1"> <div class="card-content white-text"> <%= simple_format(message.text) %> </div> <div class="card-action"> <ul class="more-list"> <%if user_signed_in? && current_user.id == message.user_id %> <%= link_to "編集", "/messages/#{message.id}/edit", method: :get %> <%= link_to "削除", "/messages/#{message.id}", method: :delete %> <% end %> </div> </div> </div> </div>
kakedashi

2019/09/12 05:17

diviseのgemを入れているのですが、なにか指定しないといけないのでしょうか?
退会済みユーザー

退会済みユーザー

2019/09/12 05:28

サインアウトに関して divise? deviseを使っているのであれば、sign_outにパスを記載をせずにSessionsControllerでprotectedに下記指定でログアウト後のパス指定ができます。 def after_sign_out_path_for(resource) root_path end コメントも自動で出るかと思います。
kakedashi

2019/09/12 05:40

sign_outのパスを消し、 class SessionsController < ApplicationController protected def after_sign_out_path_for(resource) root_path end end と記載したのですが、先程と同じ結果でした。
退会済みユーザー

退会済みユーザー

2019/09/12 05:56

application_controllerにafter_sign_out_path_forを記載した場合はいかがでしょうか?
kakedashi

2019/09/12 07:34

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問