Mam taki problem. Próbuję napisać formularz który bedzie walidowany. Sciągnąłem już plugin localization-symplyfied i zrobiłem polskie komunikaty o np. tym że dane pole jest puste. Mam jeszcze problem w znianie nazwy kolumny. Np. w bazie mam tabelę “users” a w niej kolumnę “name”. Jeśli teraz pozostawie pole w formularzu puste to wyświetli mi się: “Name - to pole jest puste.”, a chciałbym żeby wyświetlało się “Nazwa użytkownika - to pole jest puste.”. Myślałem aby zmienić fizycznie nazwę kolumny w bazie danych, ale wolałbym unikać takich rzeczy. Czy w imlementacji AR jest taka opcja zmiany wyświetlanej nazwy dla formularza?? Pomóżcie
W samym AR zdaje się nie ma (albo kiepsko szukałem). Ja po prostu podmieniłem funkcje, które wyświetlają te komunikaty, tak, aby dało się dodać swoją własną nazwę pola, jako dodatkowy arhument w hashu.
Drogus, jakbyś mógł wrzuć jakąś cześc kodu o której piszesz bo nie zabardzo rozumiem to co zaproponowałeś. Dobiero zaczynam zabawe z Rails i szybko kapujący nie jestem:]. Będe wdzięczny.
Zamiana wrzucania nazwy pola:
[code]ActiveRecord::Errors.class_eval do
def full_messages
full_messages = []
@errors.each_key do |attr|
@errors[attr].each do |msg|
next if msg.nil?
if attr == "base"
full_messages << msg
else
full_messages << "Pole " + human_attribute_name_pl(attr) + " " + msg
end
end
end
return full_messages
end
end[/code]
I metoda, która zwróci Polską nazwę dla danego atrybutu
def human_attribute_name_pl(attr)
case attr
when 'title'
'tytuł'
when 'link_adress'
'adres'
else
attr
end
end
no i trzeba podmienić teksty dla poszczególnych walidacji, na przykład:
ActiveRecord::Errors.default_error_messages[:blank] = "nie może być puste."
Można by to napisać lepiej, szczególnie jeżeli mamy wiele pól do walidacji - najlepiej byłoby dodać nowy argument do metod: validates_*_of, w kórym moglibyśmy określić polską nazwę danego pola. W tym jednak wypadku stwierdziłem, że dla 2 pól, które tak naprawdę muszę zwalidować (bardzo mała aplikacja) nie opłaca się męczyć.
Pozdrawiam
Jeśli dobrze rozumiem potrzebujesz pluginu Custom Error Message
Tu znajdziesz opis gdzie go dostać i jak zamontować.
http://wiki.rubyonrails.org/rails/pages/Custom+Error+Message
w skrócie
np.
validates_acceptance_of :accepted_terms, :message => ‘^Twoja wiadomość’
po wrzuceniu pluginu w vendor/plugins, dodając do :message na początku “^” ominiesz nazwe kolumny w tabeli.
Natychmaistowa odpowiedz. To mi się podoba. Dzieki wielkie wszyskim. Pozdrawiam.