error_messages_for

Mam problem z pojawianiem się wiadomości o złej walidacji formularza. W modelu mam wpisane validates_presence_of :nazwisko, w partialu, który pokazuje formularz mam:

[code]<%= error_messages_for “info” %>

Nazwisko <%= text_field "info", "name" %>

[/code] Jednak po wysłaniu formularza pustego nic się nie pojawia. Co może być problemem?

nazwisko != name :wink:

Ostatnio dużo osób pyta o wskazówki na tym forum. Zauważyłem, że spora część używa polskich nazw w kodzie/sql (tutaj “nazwisko”, wcześniej było “graczs” i kilka innych)

Z ciekawości zapytam: jakie są zalety używania polskich nazw w kodzie ? (Szczególnie w środowisku takim jak RoR gdzie o wiele wygodniej jest podążać przygotowaną już ścieżką niż wymyślać swoje konwencje).

Najlepiej wygeneruj sobie jakiś testowy scaffolding i porównaj kody :wink:

Zadna - ja np.: uzylem polskich nazw tylko jak przepisywałem legacy app - napisana kiedys w PHP a stwierdziłem ze wole mieć osoby.id niż people.id :wink:

Od jakiegoś czasu jednak jestem zwolennikiem anglojezycznych nazw niz polski, zwlaszcza ze - jak zauwazyles - konwencja skazuje mnie na jezyk angielski.

Ja w każdym języku wolę używać nazw angielskich, bo chociaż rodzimy język fajny jest, to jednak instrukcje, funkcje, metody, biblioteki itp. itd. są pisane po angielsku, a łączenie dwóch języków w kodzie wygląda dla mnie dziwnie. Nie mówiąc już o fakcie, że jakbym zechciał później to udostępnić szerszemu gronu osób, to nikt oprócz polskojęzycznych się tym nie zainteresuje.

Oj nie nie. Gafe strzeliłem jak pisałem posta.
W modelu jest oczywiście validates_presence_of :name

Ma na to wpływ, że formularz służy do aktualizacji informacji??

Komunikaty o błędach są wypisywane dla obiektu. W twoim przypadku obiektem jest “info”.
Sprawdź czy posiadasz w danej metodzie kontrolera (powiedzmy “update”) zmienną która posiada
referencję do wspomnianego wcześniej obiektu. Na przykład @info=Info.find(params[:id]) . Nie wystarczy, że taka zmienna jest dostępna w metodzie wyświetlajacej formularz (powiedzmy “edit”).
To, że formularz służy do aktualizacji nie ma znaczenia, bo sprawdzanie validates_presence_of również tu działa (a nie tylko przy tworzeniu nowego rekordu).

Janusz dzięki! Faktycznie miałem @info tylko w edit a w update już tego nie miałem. Ale miałem jeszcze jeden inny błąd, który za to wszystko odpowiadał. W kodzie miałem redirect_to a powinno być render.