実現したいこと
フラッシュメッセージ(友達申請を送りました)を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 コメント