Witam
Mam kłopot z obsługa błędów w rails 3.0.0. Jestem poczatkujący w temacie rails i ciezko mi rozwiazac problem. Stad moje pytanie i prosba o pomoc.
Waliduje poprawnosc tworzenia konta uzytkownika i unikalnosc :email, :user_name and :password.
W widoku “user/register” mam nastepujacy kod:
[quote]<% form_for :user do |form| %>
<%= render ‘shared/error_messages’, :target => @user %>
…
<% end %>[/quote]
Zawartosc _error_Messages.html.erb
[quote]<% if target and target.errors.any? %>
<%= pluralize(target.errors.count, 'error') %>
prohibited this user from being saved:
There were problems with the following fields:
<% target.errors.full_messages.each do |msg| %>
<%= msg %>
<% end %>
<% end %>[/quote]
W momencie gdy tworzenie konta uzytkownika sie nie powiedzie (np :user_name juz istnieje) dostaje nastepujacy blad:
[quote]wrong number of arguments (2 for 1)
Extracted source (around line #3):
1: <% if target and target.errors.any? %>
2:
3:
<%= pluralize(target.errors.count, “error”) %>
4: prohibited this user from being saved:
5:
There were problems with the following fields:
6:
[/quote]
Ponizej moje funkcje walidujace w “models/user.rb”
[quote]validates_uniqueness_of :screen_name, :email, :message => “jest już zajęty.”
validates_confirmation_of :password, :message => “i jego potwierdzenie są różne”
validates_length_of :screen_name, :within => SCREEN_NAME_RANGE, :too_short => “jest zbyt krótki (minimum #{SCREEN_NAME_MIN_LENGTH} znaki).”, :too_long => “jest zbyt długi (maksimum to #{SCREEN_NAME_MAX_LENGTH} znaków).”
validates_length_of :password, :within => PASSWORD_RANGE, :too_short => “jest zbyt krótkie (minimum #{PASSWORD_MIN_LENGTH} znaki).”, :too_long => “jest zbyt długie (maksimum to #{PASSWORD_MAX_LENGTH} znaków).”
validates_length_of :email, :maximum => EMAIL_MAX_LENGTH, :message => “jest zbyt długi.”
validates_presence_of :email, :message => “nie może być pusty.” #validates_presence_of :email
validates_format_of(:screen_name, :with => /^[A-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ0-9_]*$/i, :message => "może zawierać tylko litery, " + “cyfry i znaki podkreślenia.”)
validates_format_of(:email, :with => /^[A-Z0-9._%-]+@([A-Z0-9-]+.)+[A-Z]{2,4}$/i, :message => “musi być prawidłowym adresem e-mail.”)[/quote]
Do tego klasa User controller
def register @title = “Rejestracja”
if request.post? and params[:user] @user = User.new(params[:user])
if @user.save
flash[:notice] = “Utworzono konto użytkownika #{@user.screen_name}!”
redirect_to :action => “index”
end
end
end
end[/quote]
Pomozcie prosze rozwiazac ten problem.
w błędach wtedy wywalić możesz te message
wtedy w widoku wystarczy
<% form_for(@post) do |f| %>
<%= f.error_messages %>
nie te dziwne konstrukcje co masz
do tego w kontrolerze te @title = “Rejestracja” to tu nie powinno być jak dla mnie
w sumie zainteresuje się
screencastami
a później nifty:generators i formtastic d oformularzy
if request.post? and params[:user] - to tez jest zle, czy to post czy nie to w routach ustaw, a params sprawdzanie to model robi , nie tędy droga, ogólnie coś dużego do nauki wziełeś i jeszcze ze złych źródeł,
Ech głupio że wywalili zapomniałem o tym w sumie mam nową aplikację pod rails 3 i dalej tego używam i działa, ale pewnie wywalą wsparcie do tego ;/
Sprawdziłem, czemu nie zauważyłem, że tego już nie ma i wyszło na to że wszędzie używam formtastic do formularzy. Dzięki temu odpada problem wszelaki z formularzami
Jak powiedzial sevos, przyklad ktory podalem robilem wzorujac sie na oficjalnym tutorialu. Czy ktos wie o co chodzi z metoda “pluralize”? Czemu to sie wywala?
Poszerzajac watek: Jak stworzylem sobie kolejny projekt i uzylem scaffold do generowania “Micropost” to walidacje dlugosci znakow w polu “ZawartoscPosta” zadzialala poprawnie. Oczywiscie error wyswietlil sie w jezyku angielskim. Jak spolszczyc wyswietlane komunikaty?