복붙노트

[RUBY-ON-RAILS] 레일 3 사용자 정의 고안 오류 메시지?

RUBY-ON-RAILS

레일 3 사용자 정의 고안 오류 메시지?

나는 인증을 처리하기 위해 고안를 사용하고 있습니다. 좋아 전반적으로 나는,하지만 난 에러 표시를 조금 사용자 정의하고 싶습니다. 지금은 내보기에 다음을 가지고있다.

<div class="field <% if resource.errors[:email].present? %>error<% end %>">
  <%= f.label :email, "Email:" %><br />
  <% if resource.errors[:email].present? %>
    <ul>
      <% resource.errors[:email].each do |msg| %>
        <li><%= msg %></li>
      <% end %>
    </ul>
  <% end %>
  <%= f.text_field :email, :class => "text" %>
</div>

무효 : 이메일에 문제가있을 때, 메시지가 표시 다음과 같다. 그것은 매우 사용자 친화적 인 아니지만,이 메시지가 설정되는 어디서 찾을 수 없습니다. devise.en.yml에있는 것으로 나타나지 않지만 아마도 내가 뭔가를 내려다하고 있습니다.

나는 오류 메시지를 사용자 정의 할 수 있습니다 어떤 생각?

감사!

해결법

  1. ==============================

    1.이 검증은 검증 모듈에 정의 된 모든이며, 기본 오류 메시지가 레일 사용합니다.

    이 검증은 검증 모듈에 정의 된 모든이며, 기본 오류 메시지가 레일 사용합니다.

    당신은 당신의 모델이을 대체 할 수 있습니다.

    validates_format_of :email, :with=>email_regexp, :allow_blank => true, :message=>"new error message here" 
    
  2. ==============================

    2./config/locales/devise.en.yml : 당신의 로케일 파일에서 오류 메시지를 구성 할 수 있습니다

    /config/locales/devise.en.yml : 당신의 로케일 파일에서 오류 메시지를 구성 할 수 있습니다

    코드와 어떤 쉽게 원하는대로 수정할 수 있습니다 다음과 같은 뭔가를해야하는 :

    en:  
      errors:  
        messages:  
          not_found: "not found"  
          already_confirmed: "was already confirmed"  
          not_locked: "was not locked"  
    
      devise:  
        failure:  
          unauthenticated: 'You need to sign in or sign up before continuing.'  
          unconfirmed: 'You have to confirm your account before continuing.'  
          locked: 'Your account is locked.'  
          invalid: 'OH NOES! ERROR IN TEH EMAIL!'  
          invalid_token: 'Invalid authentication token.'  
          timeout: 'Your session expired, please sign in again to continue.'  
          inactive: 'Your account was not activated yet.'  
        sessions:  
          signed_in: 'Signed in successfully.'  
          signed_out: 'Signed out successfully.'  
    

    더 자세한 설명은 (스크린 샷)이 URL을 확인하십시오. 기사의 사용자 지정 오류 메시지 섹션.

  3. ==============================

    3.당신이 장치에 의해 추가 된 세관 검증에 대한 메시지를 변경하려면, 기독교의 답변을 확인합니다.

    당신이 장치에 의해 추가 된 세관 검증에 대한 메시지를 변경하려면, 기독교의 답변을 확인합니다.

    사용자 정의 할 유효성 검사가 이메일 형식과 같은 표준 검증 경우 그렇지 않으면, 당신은 고안의 검증을 제거하고 자신으로 대체 할 필요가 없습니다. 이 문제를 처리하는 더 좋은 방법은 레일 가이드에 나와있는 기본 오류 메시지 우선 순위를 사용하고 특정 필드와 특정 유효성 검사 오류 메시지를 무시하는 것입니다.

    이 특정 질문에 대해, 키는 당신이 추가 할 필요가 있다는 설정 / 로케일 / en.yml 변경하기 위해 이메일 오류에 대한 사용자 정의 메시지가 유효가 activerecord.errors.models.user.attributes.email.invalid이다 (여기서 사용자 모델의 이름)입니다 :

    en:
      activerecord:
        errors:
          models:
            user:
              attributes:
                email:
                  invalid: "custom invalid message"
    

    레일은 다음과 같은 순서로 유효성 검사를위한 쇼에 메시지를 검색합니다 :

    activerecord.errors.models.[model_name].attributes.[attribute_name]
    activerecord.errors.models.[model_name]
    activerecord.errors.messages
    errors.attributes.[attribute_name]
    errors.messages
    
  4. from https://stackoverflow.com/questions/5839071/customizing-devise-error-messages-in-rails-3 by cc-by-sa and MIT license