rails6 flashメッセージが表示されません。

実現したいこと

フラッシュメッセージ(友達申請を送りました)をmy_goal.html.slimの画面上部に表示したいです。

前提

今自分の目標を他人と共有できるアプリを作成しています。
そこで他のユーザーにフレンド申請を行うと「友達申請を送信しました」とmonthly_goals/:id/my_goalのurlの画面上にフラッシュが表示されるようにしたいです。↓のように(例ログインしました)表示するのがゴールです。
イメージ説明
ユーザー検索後に↓の「はい」のボタンをクリックするとmonthly_goals/:id/my_goalのurlにリダイレクトされるようになっておりその際フラッシュ(友達申請を送りました)を表示したいです
イメージ説明

環境

  • Rails 6.1.7.6
  • ruby 3.0.6
  • devise (4.9.2)
  • bootstrap3.1

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

エラーは特にありません

該当のソースコード

処理の全体像
①目標申請依頼ページで「はい」クリック

②relationships_controller.rb内のcreateアクションが反応

③my_goal.html.slimにリダイレクト(フラッシュメッセージの表示)

relationships_controller.rb.

class RelationshipsController < ApplicationController 省略 def create @other_user = params[:relationship][:reciever_id] current_user.can_follow?(@other_user,current_user) ? (current_user.follow(relationship_params,current_user)) : (redirect_to my_goal_monthly_goal_path(current_user) ) end end

user.rb

def follow(relationship_params,user) relationship = Relationship.new(relationship_params) if relationship.save redirect_to my_goal_monthly_goal_path(user), notice: "友達申請を送信しました" current_user.create_notification_follow!(user,params[:relationship][:reciever_id]) else flash.now[:alert] = "友達申請の送信に失敗しました。" render template: "monthly_goals/my_goal" end end

application.html.slim

省略 body - if flash.notice.present? .alert.alert-success= flash.notice = yield

my_goal.html.slim

= provide(:title, "マイゴール") = render 'layouts/header' h1 = "#{@current_user.name}さんの目標" section.monthly_goal h2 = "あなたの#{@monthly_goal.goal_achieved_at.strftime('%Y年%m月%d日')}に達成する目標" p.change_goal = @monthly_goal.monthly_goal p = link_to '編集', '#', class: 'edit_button' 省略

試したこと

ここに問題に対して試したことを記載してください。
試したこと
①redirect_toの中にフラッシュを埋め込む方法の確認
⇨シンボルで記載し

redirect_to root_path, notice: '成功しました'

https://pikawaka.com/rails/redirect_to

②インデントの配置ミスでの非表示を疑いました。
⇨間違ってないと思います。下記を参考にしてみました
https://teratail.com/questions/319710

コメントを投稿

0 コメント