質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

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

Q&A

解決済

1回答

100閲覧

フラッシュメッセージの国際化でエラーになります。

yacco

総合スコア2

Ruby on Rails

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

0グッド

0クリップ

投稿2024/03/20 06:38

実現したいこと

掲示板へのコメントを作成時「コメントを作成しました」また失敗時に「コメントを作成出来ませんでした」というフラッシュメッセージを表示することが目標です。

発生している問題・分からないこと

メッセージの国際化がうまくいかず、フラッシュメッセージ欄にそのエラー文が出ます。
ja.ymlの書き方に沿って呼びだしているかなと思うのですが、エラー改善せずアドバイスいただけると幸いです。
よろしくお願いします。

エラーメッセージ

error

1translation missing: ja.flash_messages.comment_created, item: Comment.model_name.human

該当のソースコード

ja.yml

1ja: 2 helpers: 3 submit: 4 create: 登録 5 submit: 保存 6 update: 更新 7 post: 投稿 8 label: 9 email: メールアドレス 10 password: パスワード 11 user_sessions: 12 new: 13 title: ログイン 14 login: ログイン 15 to_register_page: 登録ページへ 16 password_forget: パスワードをお忘れの方はこちら 17 users: 18 new: 19 title: ユーザー登録 20 to_login_page: ログインページへ 21 header: 22 login: ログイン 23 logout: ログアウト 24 board: 掲示板 25 board_index: 掲示板一覧 26 create_board: 掲示板作成 27 bookmark_index: ブックマーク一覧 28 profile: プロフィール 29 flash_messages: 30 login_success: "ログインしました" 31 login_fail: "ログインに失敗しました" 32 logout_success: "ログアウトしました" 33 user_registration_success: "ユーザー登録が完了しました" 34 user_registration_fail: "ユーザー登録に失敗しました" 35 login_required: "ログインしてください" 36 board_created: "掲示板を作成しました" 37 board_creation_failed: "掲示板を作成出来ませんでした" 38 comment_created: "コメントを作成しました" 39 comment_creation_failed: "コメントを作成出来ませんでした" 40 search: 41 placeholder: 検索ワード 42 button: 検索 43 boards: 44 no_boards: "掲示板がありません" 45 new: 46 title: "タイトル" 47 body: "本文" 48 show: 49 detail: "掲示板詳細" 50 comment: "コメント" 51 time: 52 formats: 53 long: "%Y年%m月%d日 %H時%M分" 54 short: "%m/%d %H:%M" 55

comments_controller

1class CommentsController < ApplicationController 2 3 def create 4 comment = current_user.comments.build(comment_params) 5 if comment.save 6 flash[:success]= t('flash_messages.comment_created, item: Comment.model_name.human') 7 redirect_to board_path(comment.board) 8 else 9 flash[:danger] = t('flash_messages.comment_creation_failed, item: Comment.model.human') 10 redirect_to board_path(comment.board) 11 end 12 end 13 14 private 15 16 def comment_params 17 params.require(:comment).permit(:body).merge(board_id: params[:board_id]) 18 end 19end 20

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

最初はコントローラー内での条件分岐を

ruby

1def create 2 comment = current_user.comments.build(comment_params) 3 if comment.save 4 redirect_to board_path(comment.board), flash: { success: t('flash_messages.comment_created', item: Comment.model_name.human) } 5 else 6 redirect_to board_path(comment.board), flash: { danger: t('flash_messages.comment_creation_failed', item: Comment.model_name.human) } 7 end 8end

と書いていましたが、上記の該当ソースコードに改めました。

補足

特になし

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

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

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

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

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

guest

回答1

0

自己解決

解決いたしました。国際化の記述が重複していたためと思われます。下記のように修正したところ、メッセージが正常に日本語で表示されました。

if comment.save flash[:success]= t('flash_messages.comment_created') redirect_to board_path(comment.board) else flash[:danger] = t('flash_messages.comment_creation_failed') redirect_to board_path(comment.board) end

投稿2024/03/20 07:17

yacco

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問