0

내 Devise 등록 페이지에 중첩 된 양식이 있습니다. 역할 모델을 통해 사용자에게 연결된 회사 모델이 있습니다.사용자에게 친숙 함 표시 중첩 된 유효성 검사 오류가 있음

은 관련 게시물에 여기를 참조하십시오 : How do I update a nested resource without passing the data via a form

나는 등 내 검증을 설정할 수 있습니다 그들은 잘 작동하지만 오류 메시지가 중첩 된 리소스를 표시 할 때 그것은 추한 도착 - 문자 : 예를 들어

나는 빈 양식을 제출하면 내가 얻을 :

>  Email can't be blank 
>  Password can't be blank 
>  Roles company name can't be blank 
>  Roles company address1 can't be blank 

처음 두 개의 비 중첩 된 형태 요소와 마지막 두 설명하지만, 거의 사용자 친화적이다. 그들은 'Company Name'이어야하고 'Company Address'는 비워 둘 수 있습니다.

거대한 코드 조각이없이 변경할 수 있습니까?

UPDATE

내가 수동으로 고안 오류 메시지 도우미를 오버라이드 (override) 할 수 있습니다 :

어쨌든 서식을 정리하고 싶었다

https://github.com/plataformatec/devise/blob/master/app/helpers/devise_helper.rb

.

업데이트 2

내가 뒷조사를했고, 나는이 발견 :

내가 내 en.yml이에 성공하지 않아야 수집 무엇부터 http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models

:

en: 
    activerecord: 
     attributes: 
      user/role/company: 
       address1: "First Name" 
       name: "Company Name" 

나는 그것을 시도했지만 지금까지는 행운이 없습니다.

UPDATE 3

는 더 내가 더 내가 찾을 파고.

https://github.com/jeremydurham/custom-err-msg

(몇 년 동안 유지되지 않지만)이 보석은 당신이 모델이 완전히 속성을 제거 할 수 있습니다 : 이것은 최선의 해결책이 될 수 있습니다. 나는이 경로를 찾아 어쨌든 사용자 정의 오류 메시지를 정의 할 수 있습니다.

+0

중첩 모델의 유효성 검사 메시지 add_user_specific에 수동으로 메시지를 추가했습니다. – Sanjiv

+0

validates : address1, : presence => {: message => "Address Required"} 이제 "Roles company address1 Address Required"메시지가 나타납니다. –

답변

1

"custom-err-msg"Custom error Gem은 실제로 레일 버전에 의존하지 않습니다. 그래서 당신 자신에 의해 override full_messages 메소드를 사용하거나 부모 모델 자체에서 중첩 된 모델 검증을 추가하는 것이 가장 좋을 것입니다.

+0

동의합니다. –

관련 문제