2017-09-07 17 views
0

私は問題は、私は、フォームからの私のモデルを保存するとき、私はのために値を設定しない場合は、2つのエラーが戻ってきているレール5では、フィールドを空白/空白のままにしておくと、どのように検証メッセージが1つしかありませんか?

belongs_to :crypto_currency 

    validates :crypto_currency, presence: true 

...私は私のモデルでこれを持っているRailsの5を使用しています「Crypto_currency」フィールド...

これは私のconfig/locales/en.ymlファイルです。私は "暗号化通貨"の単語を "暗号化通貨の値を選択してください"から削除する方法をまだ解決しなければなりません。エラーメッセージが表示されていますが、私は唯一のエラーメッセージは、それが入力されていない場合、私は私のモデルのフィールドに1つのエラーメッセージを持っているにはどうすればよい

en: 
    activerecord: 
    errors: 
     models: 
     user_notification: 
      attributes: 
      crypto_currency: 
       blank: "Please select a value for crypto currency." 

ファイルで定義されているはっきりと見ることができますか?

編集:コメントへのresponeでが、ここで私は5がデフォルト

belongs_to :crypto_currencyで必要とされるbelongs_to協会が検証を追加しますので、あなたがあなたを必要としない可能

<ul> 
    <% @user_notification.errors.full_messages.each do |message| %> 
    <li><%= message %></li> 
    <% end %> 
    </ul> 
+0

ブレークポイント( 'byebug')を実行して' user_notification..errors.full_messages'を実行すると、何が表示されますか? 'user_notification.errors'はどうでしょうか? – Leito

+0

フォームにエラーをどのように表示していますか?両方のエラーはフィールド上か、フォーム用とフィールド用のどちらですか? – Leito

+0

エラーメッセージを質問の編集としてどのように反映するか含まれています。 – Dave

答えて

0

をカスタマイズ:

belongs_to :crypto_currency, optional: true 
validates :crypto_currency, presence: true 

そして、

en: 
    activerecord: 
    attributes: 
     user_notification: 
     crypto_currency: "" 
    errors: 
     models: 
     user_notification: 
      attributes: 
      crypto_currency: 
       blank: "Please select a value for crypto currency." 
2

RailsのTHER RORメッセージを表示する方法を説明します自分の。

あなたはこのようbelongs_toデフォルトの検証をスキップすることができます。このようなあなたのモデルを変更してみ

belongs_to :crypto_currency, optional: true 

したり、独自のを削除し、デフォルトのエラーメッセージ

+0

それは仕事ではありません。私は自分のバリデーションを削除し、あなたが提案したように "required:true"を追加しましたが、表示されるカスタムメッセージではなく、 "Crypto currency must exist"と表示されます。 – Dave

+0

required:false – chumakoff

+0

あなた自身の検証を削除する場合は、 'belongs_to:crypto_currency、required:true'と' required: "ロケールで暗号化通貨の値を選択してください。あなたの検証を維持したいなら、 'required:false'を実行してロケールを変更しないでください。 – chumakoff

関連する問題