우리는 종종 응용 프로그램에서 변환되지 않은 모델 속성을 비틀 거리게됩니다. 애트리뷰트의 이름이 변경되었거나 이와 같이 변경되기 때문에 가장 자주 발생합니다.레일 : Model.human_attribute_name : 번역을 찾을 수 없을 때 필드에서 오류가 발생해야합니까? (아마도 state_machine에 의한 것일 수도 있습니다.)
Model.human_attribute_name :field
이 번역을 찾지 못하면 I18n 오류가 발생하는 것이 좋습니다. 이것을 달성 할 수있는 방법이 있습니까?
업데이트는 :
다른 문제가있는 것 같다. 여기 내 국제화 설정은 다음과 같습니다
I18n.enforce_available_locales = false
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
config.i18n.default_locale = 'de-CH'
config.i18n.available_locales = ['de', 'de-CH', 'en']
config.i18n.locale = 'de-CH'
config.i18n.fallbacks = {'de-CH' => 'de', 'en-GB' => 'en'}
내가 정상적으로 일반적으로 잘 작동하는 것 같다있는 de
에 위임 할 de-CH
의 실종 번역을 원하기 때문에 내가 fallbacks = false
을 설정할 수 없습니다. 하지만 내 state machine 속성 human_to_state
메서드는 작동하지 않는 것 같습니다.
= f.input :state_event, collection: f.object.state_transitions,
label_method: :human_to_name # This causes the problem!
이 뷰에서 "주 이벤트"로 인쇄하고, 나는 다음과 같은 국제화 키를 추가 할 때, 그것은 "상태"를 성공적으로 번역 된 것 :
드 여기에 문제를 일으키는 뷰 코드는 : mongoid : 속성 : 활동 state_event : 그래서 거기에
상태
정말 이 누락 된 번역이지만, 국제화 어떤 방법으로 불평하지 않습니다. 또한 사용자 정의 예외 처리기를 사용하여 예외를 잡으려고 시도했지만이 발생하지 않는 것 :I18n.exception_handler = lambda do |exception, locale, key, options|
binding.pry # This is never reached!
end
어떤 생각이 무슨 일이야? 상태 머신에 문제가 있습니까? 의
호 :
는 I 상술 라인 패칭 human_attribute_name 재정 의하여이 "고정"HTTPS : //github.com/rails/rails/issues/6489 – Markus