WALIDACJA i POLSKIE ZNAKI w :massage => "żćł"

Witam wszystkich serdecznie!
Pisząc walidację w modelu User do formularza rejestracji, napotkałem pewien problem. Chodzi o to, że jeśli dodam do opisu błędu polskie znaki to momentalnie strona pokazuje mi to: We’re sorry, but something went wrong.
np w tym wierszu: validates_format_of :name, :with => /\A[a-zA-Z0-9]+\Z/, :message => “, moze zawierać tylko litery i cyfry” lub w innym, póki nie używam polskich znaków walidacja w formularzu działa idealnie.
Kodowanie utf-8, wszędzie sprawdziłem! wszystko z pozoru wygląda OK, aplication.rb ma wiersz config.encoding = “utf-8”
Już nie wiem o co chodzi! w necie nie mogę znaleźć podobnego problemu, owszem czasem komuś wyskoczy taki komunikat jak mi ale to kwestia ustawień kodowania na utf-8, a u mnie wszystko jest ustawione…

Dodaj na początku pliku:

encoding: UTF-8

Pozdrawiam

Bez # bo w necie znalazłem porady ale wygladało to tak # ebcoding: utf-8, tak więc zrobiłem ale nie dzialało…

Możesz też przerzucić się na ruby w wersji >= 2.0.0, gdzie UTF-8 jest domyślne.

Przenieś komunikat błędu do pliku yml z tłumaczeniami.

1 Like

Dzieki “tiwi”, rozumiem że mam stworzyć samodzielnie teki plik tłumaczeń np. user.yml w katalogu locales i go jakoś połaczyć z modelem, posiedzę i pokombinuję, ponieważ widzę że to problem samego modelu ponieważ każdy widok pięknie wyświetla mi polskie znaki nie ma z tym problemu, więc sprawa kodowania jest OK,

Dzięki i0pez ale nadal bez zmian, popracuje nad plikiem tłumaczeń yml, ale jaka bym książkę nie wzął do ręki to pisząc walidację wszystkie przykłady przedsawiają komentarze błędów w języku polskim i umieszczone są bezpośrednio w modelu.

Albo dodajesz do modelu, kontrolera, biblioteki na samym początku pliku: ‘# encoding: UTF-8’, albo przenosisz tłumaczenia do plików yml - http://guides.rubyonrails.org/i18n.html

Drugie rozwiązanie jest bardziej poprawne.

qrooel, dzieki za post i powiem szczerze że kombinowałem na różne sposoby i dopiero Twój tekst “na samym początku pliku” dał mi do myślenia… umieściłem # encoding: UTF-8 przed class User < ActiveRecord::Base i za działało, wcześniej umieszczałem po class User < ActiveRecord::Base
Dzięki wielkie dziś znów nauczyłem się bardzo dużo,

Dziękuje wszystkim, którzy udzielili mi jakże ważnych i cennych wskazówek !
Problem uważam za zamknięty, jeszcze raz wielkie dzieki!

Btw, zdajesz sobie sprawę, że Twój regexp nie przepuszcza znaków ąęć i innych tego typu?

Tak jak napisał qrooel, lepszym wyjściem jest wrzucenie tego typu tekstów do yml. No chyba, że twój projekt jest malutki, to jeszcze ogarniesz te teksty porozrzucane w różnych miejscach :wink: