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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

877閲覧

【Ruby on Rails】エラーメッセージに文言を付け足したい

shirai

総合スコア1290

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/08/26 10:39

初心者です。
railsというよりrubyの質問かもしれません。

概要

モデルにvalidatesを書いてコントローラでUser.errors.messages
想定通りの3種類のバリデーション結果メッセージが
入って来るところまで確認ができましたが、後付けでこのメッセージに文言を追加したいです。
追加したい文言(現在のパスワード パスワード 確認用パスワード)はそれぞれで固定になっていて、
得られたメッセージの前に付け足します。
User.errors.messagesを破壊的に変更したいです。

以下にパターン例を挙げます。
うまい実装を教えていただけないでしょうか。(mapとか使うのかな。。。)

ruby

1# 取得時 2{ 3 :current_password => ["を入力してください。", "は8文字以上で入力してください"], 4 :password => ["を入力してください。"], 5 :password_confirmation => ["は16文字以内で入力してください。", "がパスワードと異なります。"] 6} 7 8# 付け足した後 9{ 10 :current_password => ["現在のパスワードを入力してください。", "現在のパスワードは8文字以上で入力してください"], 11 :password => ["パスワードを入力してください。"], 12 :password_confirmation => ["確認用パスワードは16文字以内で入力してください。", "確認用パスワードがパスワードと異なります。"] 13}

ruby

1# 取得時 2{ 3 :current_password => ["を入力してください。", "は8文字以上で入力してください"], 4 :password_confirmation => ["は16文字以内で入力してください。", "がパスワードと異なります。"] 5} 6 7# 付け足した後 8{ 9 :current_password => ["現在のパスワードを入力してください。", "現在のパスワードは8文字以上で入力してください"], 10 :password_confirmation => ["確認用パスワードは16文字以内で入力してください。", "確認用パスワードがパスワードと異なります。"] 11}

ruby

1# 取得時 2{ 3 :current_password => [], 4 :password => ["を入力してください。"], 5 :password_confirmation => ["は16文字以内で入力してください。", "がパスワードと異なります。"] 6} 7 8# 付け足した後 9{ 10 :current_password => [], 11 :password => ["パスワードを入力してください。"], 12 :password_confirmation => ["確認用パスワードは16文字以内で入力してください。", "確認用パスワードがパスワードと異なります。"] 13}

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

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

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

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

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

gouf

2020/08/26 12:38

> 後付けでこのメッセージに文言を追加したい ゴールとする処理結果はどのようなものですか?
shirai

2020/08/27 01:12

みたまんまパスワード変更入力画面なのですが、 1つもバリデーションに引っ掛からなかったら変更完了画面へ、 1つでもバリデーションに引っかかったら入力画面に戻って どうバリデーションに引っかかったかを赤字で表示させたいです。 view側での処理も考えたのですが、 いちいちif式でエラーがあるか判定するのもどうにもまどろっこしいと思い、 もしかしたら簡単に文言を付け加えるrubyのやり方があるのでは と思い質問に至りました。
guest

回答1

0

ベストアンサー

ja.ymlに属性の名前を追加してやるとよいかと

yaml

1ja: 2 activerecord: 3 # 以下を追加 4 attributes: 5 user: 6 current_password: "現在のパスワード" 7 password: "パスワード" 8 password_confirmation: "確認用パスワード"

投稿2020/08/26 16:52

asm

総合スコア15147

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

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

shirai

2020/08/30 06:02

これで行きます。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問