2010-02-15 4 views
10

레일스 앱을 만들고 있는데 User이라는 모델이 있습니다. 이 모델에는 isagirl이라는 부울 값이 있습니다. 사용자는 소녀인지 아닌지를 지정해야하며 두 개의 라디오 버튼으로 이루어집니다. 내가 섹스를 지정하지 않는 경우 그러나, 나는이를보고 있어요validates_presence_of + : 메시지에 필드 이름이 표시됩니다.

validates_presence_of :isagirl, :message => "You must be either a Boy or a Girl. If not, please contact us." 

가 :

Isagirl 당신은 소년 또는 소녀이어야 내 모델에서 나는이 있습니다.

오류 메시지로 문제는 'Isagirl'이 오류 메시지에 없어야한다는 것입니다. 어떻게 비활성화 할 수 있습니까? CSS를 사용하지 않고 CSS를 숨길 수도 없습니다.

감사합니다.

+4

무슨 가치가 있는지, 가능한 경우 양식의 비 2 진 성별을 지원하는 것이 좋습니다. –

답변

8

내가하는 일은 필드 이름없이 메시지를 출력하는 것입니다. 예를 들어 유효성 검사가 실패한 후에 오류 메시지를 출력하는 부분이 있습니다.

<ul> 
    <% errors.each do |attribute, message| -%> 
     <% if message.is_a?(String)%> 
      <li><%= message %></li> 
     <% end %> 
    <% end -%> 
</ul> 

이 특성은 특성을 출력하지 않습니다. 속성 이름없이 모든 메시지가 의미가 있는지 확인해야합니다.

+0

그래, 그 코드가 원하는 양식을 어떻게 알 수 있습니까? –

0

나는 (이 더러운 해킹하지 않고 고통 스러울 수)에 validates_presence_of 기능에 속성 이름을 생략하는 방법을 알고하지 않습니다하지만 난 당신이 원하는 것을 달성하기 위해 유효성 검사 기능을 사용 :

protected 
    def validate 
     errors.add_to_base("You must be either a Boy or a Girl. If not, please contact us.") if params[:isagirl].blank? 
    end 

내가 특별히 사용 방법 공백? validates_presence_of가 공백을 사용하고 있기 때문에 여기에? 시험을 위해서도 똑같은 행동을해야합니다.

add_to_base는 속성과 관련이없는 일반적인 오류 메시지를 추가하므로보기 해킹을 방지 할 수 있습니다.

5

내 프로젝트 중 하나에서 custom-err-msg 플러그인을 사용하고있었습니다.

:message => "^You must be either a Boy or a Girl. If not, please contact us." 

(시작에서 통지 ^)이 오류를 인쇄 할 때 특성 이름을 인쇄하지 않습니다 그것으로 당신은 오류 메시지가이 방법을 지정할 때. 그리고 표준 error_messages 또는 error_messages_for 도우미를 사용할 수 있습니다.

+0

답변에 대한 답변 : – bharath

+0

참고로,이 보석은 이제 'custom_error_message'라고하며 여기에서 사용할 수 있습니다. https://github.com/jeremydurham/custom-err-msg – Martin

0

errors.add_to_base 옵션을 사용하는 것이 좋습니다. 레이아웃이 어떤 모양인지 알지 못하면 일반 오류 메시지를 표시하는 가장 간단한 방법이 될 것입니다.

관련 문제