Mam taki partial do zbiorczego wypisania błędów nad formularzem.
<% if object && object.errors.any? %>
<div class="error-message">
<h3>Popraw błędy i spróbuj ponownie</h3>
<ul>
<% object.errors.full_messages.each do |msg| %>
<li><%=msg%></li>
<% end %>
</ul>
</div>
<% end %>
Włączyłem i18n, ustawiłem default language na pl, załadowałem z guthuba plik z polskim tłumaczeniem (https://raw.github.com/svenfuchs/rails-i18n/master/rails/locale/pl.yml), tylko teraz mam taki problem, że np. dla User przy rejestracji i przesłaniu pustego formualrze dostaję błędy:
Password nie zgadza się z potwierdzeniem
Name nie może byc puste
itd.
Chciałbym, aby zamiast Password było Hasło. W pliku pl.yml, dodałem tłumaczenia, ale wygląda na to, że coś jednak robię źle.
I18n.locale = :pl
I18n.t('activerecord.attributes')
powinny wyświetlić Ci się tłumaczenia atrybutów dla modeli, sprawdź czy nie brakuje user->password.
Na wszelki wypadek dałem też te same tłumaczenia w activerecord i activemodel. Wygląda, że jest ok, może do generowania błędów są brane jakieś inne klucze?:
btw. właśnie drugi raz czytam Guides o i18n i jest taki przykład:
Consider a User model with a validation for the name attribute like this:
class User < ActiveRecord::Base
validates :name, :presence => true
end
The key for the error message in this case is :blank. Active Record will look up this key in the namespaces:
I tutaj moje pytanie, skąd mogę się dowiedzieć jakie sa klucze dla różnych błędów (teraz to już się domyślam większości na podstawie tego tłumaczenia pl.yml) Jak się dokopać do takich informacji?
klucze dla różnych błędów są w źródłach (albo nie znalazłem w dokumentacji).
podstawowe w Railsach to:
inclusion: "nie znajduje się na liście dopuszczalnych wartości"
exclusion: "znajduje się na liście zabronionych wartości"
invalid: "jest nieprawidłowe"
confirmation: "nie zgadza się z potwierdzeniem"
accepted: "musi być zaakceptowane"
empty: "nie może być puste"
blank: "nie może być puste"
too_long: "jest za długie (maksymalnie {{count}} znaków)"
too_short: "jest za krótkie (minimalnie {{count}} znaków)"
wrong_length: "jest nieprawidłowej długości (powinna wynosić {{count}} znaków)"
taken: "zostało już zajęte"
not_a_number: "nie jest liczbą"
greater_than: "musi być większe niż {{count}}"
greater_than_or_equal_to: "musi być większe lub równe {{count}}"
equal_to: "musi być równe {{count}}"
less_than: "musie być mniejsze niż {{count}}"
less_than_or_equal_to: "musi być mniejsze lub równe {{count}}"
odd: "musi być nieparzyste"
even: "musi być parzyste"
A nie, w moim praktycznie nic nie ma, dopiero zacząłem, ale już działa - activerecord zamiast activemodel trzeba było, nie wiem co zrobiłem za pierwszym razem, że mi nie poszło. Wielki dzięki za pomoc.