fukasawamoe / yoriyoi

1 stars 0 forks source link

stepの入力フォームのバリデーションメッセージを意図したもののみ表示させたいです。 #110

Closed fukasawamoe closed 3 months ago

fukasawamoe commented 3 months ago

アプリのstepの編集ページについて、ローカルではエラーメッセージが意図したものが表示されるのですが、デプロイ時には意図したもの以外のエラーメッセージが表示されてしまいます。

ローカル時 Image from Gyazo

デプロイ時 Image from Gyazo

数値の方のエラーメッセージは意図した通りのメッセージのみ表示されます。 ローカル時 Image from Gyazo

デプロイ時 Image from Gyazo

解決のためにおこなったことについて ローカル時でも同じ問題が起きた際には、以下のように変更をおこない、対処ができました。 しかし、デプロイ後にもgit hubで同じように変更を確認した後でも意図しないエラーメッセージが出続けてしまっています。

# vendor/bundle/ruby/3.2.0/gems/rails-i18n-7.0.8/rails/locale/ja.yml
not_a_number: は数値で入力してください

↓↓
not_a_number: ""

コンソールで確認も行いましたが原因が特定できませんでした。 ローカル

[17] pry(main)> @step = @user.steps.find_by(id:3)
  Step Load (0.9ms)  SELECT "steps".* FROM "steps" WHERE "steps"."user_id" = $1 AND "steps"."id" = $2 LIMIT $3  [["user_id", 1], ["id", 3], ["LIMIT", 1]]
=> #<Step:0x00000001207fe240
 id: 3,
 user_id: 1,
 goal_id: 1,
 action: "",
 times_set: nil,
 created_at: Wed, 10 Jul 2024 13:55:01.259075000 JST +09:00,
 updated_at: Tue, 16 Jul 2024 19:52:25.563078000 JST +09:00>
[18] pry(main)> @step.action = "nya~~~"
=> "nya~~~"
[19] pry(main)> @step.valid?
  Goal Load (0.4ms)  SELECT "goals".* FROM "goals" WHERE "goals"."id" = $1 LIMIT $2  [["id", 1], ["LIMIT", 1]]
=> false
[20] pry(main)> @step.errors.full_messages
=> ["", "回数を入力してください"]

デプロイ後のherokuコンソールにて

irb(main):010:0> @step.action
=> "nyan"
irb(main):011:0> @step.valid?
=> false
irb(main):012:0> @step.errors.full_messages
=> ["は数値で入力してください", "回数を入力してください"]
kenchasonakai commented 3 months ago

i18n側で制御しようとするよりもmessageオプション使って何も出さないようにする方がやりやすいかも...? https://railsguides.jp/active_record_validations.html#message

fukasawamoe commented 3 months ago

ありがとうございました!! messageオプションの使用を行い無事バリデーションメッセージの希望の表示を行うことができました!