前提・実現したいこと
- RailsでTwitterのようなアプリを作成中。
- インスタンスのエラーメッセージをflashに格納することで、異なるコントローラで受け取ってviewで出力している。
発生している問題
flashに格納した値はcontent_tag
ヘルパーで受け取ってエラー表示用のHTMLを生成しているが、
["コメントを入力してください"]
などという形で[""]
を含んだflashが表示されてしまう。
[""]
を除いてエラー内容だけを表示させるにはどうしたら良いのでしょうか?
該当のソースコード
rb:app/controllers/comments_controller.rb
1 # POST /microposts/:micropost_id/comments 2 def create 3 @comment = current_user.comments.new(comment_params) 4 if @comment.save 5 flash[:success] = "コメントを投稿しました" 6 redirect_to request.referrer || root_url 7 else 8 # Commentインスタンスの値をflashに格納してMicropostコントローラから受け取る 9 redirect_to request.referrer || root_url, flash: { danger: @comment.errors.full_messages } 10 end 11 end
erb:app/views/layouts/application.html.erb
1 <body> 2 <%= render 'layouts/header' %> 3 <div class="container"> 4 <% flash.each do |message_type, message| %> 5 <%= content_tag(:div, message, class: "alert alert-#{message_type}") %> 6 <% end %> 7 <%= yield %> 8 <%= render 'layouts/footer' %> 9 </div> 10 </body>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/23 08:02
2022/01/23 08:24 編集