2016-07-02 4 views
0

이메일 속성이있는 모델이 있습니다. 그것은 다음과 같은 검증 있습니다양식에 필드 당 단 하나의 오류 만 표시

  • 리스팅 빈
  • 이메일이 유효하지 않을 수 있습니다 : 사용자가 빈 하늘 메일로 양식을 제출

    validates :email, presence: true, length: { maximum: 50 }, format: { with: VALID_EMAIL_REGEX } 
    

    을, 나는 다음과 같은 두 오류를 얻을

이러한 시나리오에서 필드와 관련된 첫 번째 오류 메시지 만 표시하려면 어떻게해야합니까?

나는 수행하여 객체와 관련된 오류 메시지를 검색 해요 :

@object.errors.full_messages 

답변

2

당신은이 라인이 매우 쉽게 작업을 수행 할 수 있습니다

<%= @object.errors.full_messages.first if @object.errors.any? %> 

그냥 객체 인스턴스로 대체합니다.

당신이있는 경우 :

편집

object.errors.full_messages_for(:email) 

이 단일 필드에 대해 사용자에게 특정 오류가 발생합니다 : 당신은 단지 하나 개의 필드에 사용할 경우,이 메소드

http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-full_messages_for있다 많은 필드 :

<% @object.errors.each do |attr, msg| %> 
    <%= "#{attr} #{msg}" if @object.errors[attr].first == msg %> 
<% end %> 
+0

감사합니다. 확장 방식? 예를 들어 양식에 10 개의 필드가있는 경우 각 필드와 관련된 첫 번째 오류를 개별적으로 추출하고 싶지 않습니다. – user1175969

+1

질문을 편집했습니다. 필요하다면 출력을 사용자 정의 할 수 있습니다. –

관련 문제