2008-09-24 1 views
8

내 레일 앱에서는 활성 레코드 개체에 유효성 검사 도우미를 사용하며 훌륭합니다. 문제가 발생하면 개인적인 문제와 함께 웹 페이지에 "3 가지 오류로 인해이 포버가 저장되는 것을 금지했습니다"라는 표준이 나타납니다."3 개의 오류로 인해이 foobar가 저장되지 못했습니다"라는 유효성 검사 메시지가 Rails에 어떻게 변경됩니까?

이 기본 메시지를 직접 재정의 할 수있는 방법이 있습니까?

답변

11

오류를 표시하는 데 사용하는 error_messages_for 도우미는 기본 헤더 텍스트를 변경할 수있는 :header_message 옵션을 허용합니다. 마찬가지로 : error_messages_for 'model', :header_message => "You have some errors that prevented saving this model"

RubyOnRails API

이 당신의 친구입니다.

+0

완벽한 - 감사합니다! – RichH

+0

언급할만한 가치가 있습니다 : <% = f.error_messages : object_name => '귀하의 정보'%> –

0

오류 도우미 대신 model.errors 해시를 반복 할 수 있습니다.

+0

각각의 경우 오류 해시를 처리하는 방법에 대해 생각했지만 모델에서 DRY 방법을 사용하기를 바랍니다. – RichH

1

모델의 "validates_"메소드는 모두 일반적으로 : message => "My Validation Message" 매개 변수로 전달 될 수 있습니다.

<% if([email protected]?) %> 
<div id="error_message">   
    <h2> 
    <%= image_tag("error.png", :align => "top", :alt => "Error") -%> 
    Oops, there was a problem editing your information. 
    </h2> 
    <%= short_error_messages_for(:model) %> 
</div> 
<% end %> 

그런 다음 내 application_helper에 내가 오류를 반복하고 간단한 목록을 생성합니다 :

나는 일반적으로 이런 식의 오류를 포장

def short_error_messages_for(object_name) 
    object = instance_variable_get("@#{object_name}") 
    if object && !object.errors.empty? 
     content_tag("ul", object.errors.full_messages.collect { |msg| content_tag("li", msg) })  
    else 
     "" 
    end 
    end 

그 코드가 꽤 오래과 아마도 요즘 루비를 쓰는 방법이 아니 겠지만, 요점을 얻으실 수 있습니다.

관련 문제