validatesのエラー表示の優先度を設定できますでしょうか?
現在、validatesで定義したエラーを全てviewに表示するようにしているのですが、最初に評価したエラーだけを表示させたいです。
・model
class User < ActiveRecord::Base
validates :email,
presence: true,
format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+.)+[a-z]{2,})\Z/i, allow_blank: false,on: :create}
validates :name,
presence: true,
length: { maximum: 30 },
format: { with: /\A[a-z0-9]+\z/i,allow_blank: false,message: :invalid_name}
validates :password,
presence: true,
length: { maximum: 30 },
format: { with: /\A[a-z0-9]+\z/i,allow_blank: false,message: :invalid_password}
end
・view
<% if obj.errors.present? %>
<div id="errors"> <h4>エラーがあります。</h4> <ul> <% obj.errors.full_messages.each do |msg| %> <li><%= msg %></li> <% end %> </ul> </div> <% end %>
この場合、例えば、emailを空で登録しようとすると、
presenceのエラーの"メールアドレスを入力してください"と、formatのエラーの"メールアドレスは不正な値です"の2つのエラーが表示されます。
ただ、何も値が入力されていない場合は、まず、"メールアドレスを入力してください"だけを表示させ、"メールアドレスは不正な値です"は何か文字が入力された時のみに表示させたいです。
実装方法を考えていたのですが、いい方法が思いつきませんでした。
何かアドバイスいただけますと助かります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。