2012-09-03 24 views
5

wszyscy!Ruby on Rails I18n interpolation

Mam małą walidację dla mojego pola: nazwa użytkownika, które powinno mieć od 4 do 30 znaków. Napisałem sprawdzanie poprawności: :length => { :within => 4..30, :message => I18n.t('activerecord.errors.range') - Chciałem wyświetlić jeden komunikat o błędzie dla wszystkich rodzajów błędów (Nie lubię zbyt długo lub zbytnio), ale oto jest pytanie - czy mogę przekazać wartości min i maksimum do tłumaczenia, aby uzyskać coś podobnego : Nazwa użytkownika powinna zawierać od 4 do 30 znaków. Obecnie mam: range: "should be between %{count} and %{count} characters", co oczywiście nie działa (tylko sprawdzanie).

Czy można pobrać te wartości z zakresu?

Dziękuję wszystkim za radę!

Odpowiedz

9

można przekazać do zmiennej niestandardowej i18n tłumaczyć metody (lub jego skróconą - T):

I18n.t('activerecord.errors.range', :min => 4, :max => 30) 

Następnie można użyć je w szablonie ciąg z% {min} i {max}%.

Nie pobiera automatycznie z zakresu, ale jest to tak blisko, jak tylko mogę sobie wyobrazić.

+0

Yay! Mam to:: length => {: within => a = (4..30),: message => I18n.t ('activerecord.errors.range', : min => a.min,: max = > a.max)} Dziękujemy za pomysł! :) Mam nadzieję, że byłoby to pomocne dla kogoś! – Dmitri