2014-06-20 8 views
1

개별 필드의 양식 오류를 표시하려면 다음 함수를 사용하고 있습니다.형식이 정의되지 않은 메서드 인 'html_safe'for nil : NilClass

# Error Helper for Form 
    def show_errors(object, field_name) 
    if object.errors.messages[field_name][0].present? 
     "<label class='error'>" + object.errors.messages[field_name][0] + "</label>" if object.errors.any? 
    end 
    end 

다음과 같이 Application Helper 클래스에서 호출합니다.

<%= show_errors(@category, :name).html_safe %> 

오류가없는 경우 다음 오류가 발생합니다. 당신이 오류가없는 경우

undefined method `html_safe' for nil:NilClass 

답변

4

, 당신의 if 블록 건너 뛰고 show_errors은 nil을 반환합니다. show_errorend 앞에 else return ""과 같은 것을 추가 할 수 있습니다. 또는 도우미에서 nil을 확인하십시오.

+0

"if object.errors.any?"가 필요합니까? 줄의 끝 에서뿐만 아니라? –

+1

또는'<% = show_errors (@category, : name) .try (: html_safe) %>' –

+0

감사와 같은'시도'메소드를 사용할 수 있습니다. 루비를 처음봤을 때. 왜 우리는 "if object.errors.any?" 끝 부분에서 –

0

또는 이것을 추가하면 트릭을 수행 할 수 있습니다.

<%= show_errors(@category, :name).to_s.html_safe %> 
관련 문제