前提・実現したいこと
前回に引き続き、railsのバリデーションエラーメッセージについてです。
・エラーメッセージを出す時に、先頭につくニックネームやメールアドレスといったカラム名を表示させないようにしたい
・全てのエラーで非表示にせず、エラー内容によっては先頭のカラム名は表示させる。
・カラムによっては表示内容を変える
発生している問題・エラーメッセージ
・ユーザーのニックネームを「wat」と入力して「taken」のエラーで引っかかった時に、「ニックネームこのwatはすでに存在します」
となるので先頭の「ニックネーム」の部分を表示させないようにしたいです。
・また、takenのエラーの時に「ニックネーム」を表示させずに、blankの時は「ニックネームを入力してください」というようにしたいです。
・さらに、同じtakenのエラーでも、ニックネームの時は%{value}、メールアドレスの時は%{attribute}をメッセージ内に組み込みたいです。
該当のソースコード
ja.yml
ja: activerecord: models: user: ユーザー attributes: user: nickname: ニックネーム email: メールアドレス password: パスワード password_confirmation: 再入力 errors: messages: format: "%{message}" accepted: を受諾してください blank: を入力してください confirmation: と%{attribute}が一致しません empty: を入力してください equal_to: は%{count}にしてください even: は偶数にしてください exclusion: は予約されています greater_than: は%{count}より大きい値にしてください greater_than_or_equal_to: は%{count}以上の値にしてください inclusion: は一覧にありません invalid: は不正な値です less_than: は%{count}より小さい値にしてください less_than_or_equal_to: は%{count}以下の値にしてください model_invalid: 'バリデーションに失敗しました: %{errors}' not_a_number: は数値で入力してください not_an_integer: は整数で入力してください odd: は奇数にしてください other_than: は%{count}以外の値にしてください present: は入力しないでください required: を入力してください taken: この%{value}はすでに存在します # taken: この%{attribute}はすでに存在します too_long: は%{count}文字以内で入力してください too_short: は%{count}文字以上で入力してください wrong_length: は%{count}文字で入力してください
ビュー
haml
1- if resource.errors.any? 2 %ul 3 - resource.errors.full_messages_for(:nickname).each do |message| 4 %li= message
試したこと
ja.ymlに
format: "%{message}"
を追加しても直りませんでした。
補足情報(FW/ツールのバージョンなど)
rails(5.2.3)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/16 07:57