2017-05-24 8 views
0

私は、次のカスタム検証があります。Railsのバリデーション:スタイル2つの無効なフィールドだけ、リスト1つのエラーメッセージ

def city_presence 
    if city_id.blank? && city_out_state.blank? 
    errors.add([:city_id, :city_out_state], "A City must be present") 
    throw(:abort) 
    end 
end 

それがエラーを出しますが、何のことはやろうとしていることはこれです:

  • もしそうならcity_idcity_out_stateの両方が
    • 空白であれば、その後INVAを提供するために、ハッシュエラーのためにこれらのフィールドの両方を追加、参照してください。蓋のスタイルをの両方のフィールドに入力してください。エラーの箇条書きメッセージのみが表示されます。

これは簡単な方法ですか?

答えて

0

私は実用的なソリューションだ:

def city_presence 
    if city_id.blank? && city_out_state.blank? 
    errors.add(:city_id, "A City must be present") 
    errors.add(:city_out_state, "") 
    end 
end 

をそしてここでエラーが部分的です。重要な点は、エラーのメッセージがでない場合、エラーのメッセージはliを生成しないことです。

<% if object && object.errors.any? %> 
    <div class="alert alert-danger"> 
    <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a> 

    <p><%= pluralize(object.errors.size, "error") %> prohibited this record from being saved</p> 
    <p>There were problems with the following fields:</p> 
    <ul> 
     <% object.errors.each do |attr, message| %> 
     <% if message.present? %> 
      <li> 
      <%= message %> 
      </li> 
     <% end %> 
     <% end %> 
    </ul> 
    </div> 
<% end %> 
関連する問題