2012-05-09 5 views
7

staram się potwierdzić, czy numer telefonu jest cyfrą lub nie: -Weryfikacja numeru telefonu z regex ruby ​​

To mój user.rg

number_regex = /\d[0-9]\)*\z/ 


validates_format_of :phone, :with => number_regex, :message => "Only positive number without spaces are allowed" 

To mój view.html .haml

%li 
    %strong=f.label :phone, "Phone Number" 
    =f.text_field :phone, :placeholder => "Your phone number" 

jest to kontroler

def edit_profile 
     @user = current_user 
     request.method.inspect 
     if request.method == "POST" 
      if @user.update_attributes(params[:user]) 
       sign_in(@user, :bypass => true) 
       flash[:success] = "You have updated your profile successfully" 
       redirect_to dashboard_index_path 
      else 
       flash[:error] = "Profile could not be updated" 
       render :action => "edit_profile" 
      end 
     end 
    end 

Kiedy wpisuję numer w polu tekstowym po raz pierwszy, sprawdza on poprawność, ale jeśli wprowadzę poprawny format, a następnie spróbuję wprowadzić niewłaściwy format, to pominie walidacje i otrzymam wiadomość flash, że profil został pomyślnie zaktualizowany, jednak niewłaściwa wartość (z literami) nie jest zapisywana.

Co może być problemem?

+0

Przynajmniej zdezynfekować dziedzinie sporo. Kiedy otrzymuję wiadomości typu "bez dozwolonych spacji", jestem jak "noobs ponownie". – Reactormonk

Odpowiedz

9

Używam tego: z => "bez problemu".

validates :phone,:presence => true, 
       :numericality => true, 
       :length => { :minimum => 10, :maximum => 15 } 

Jeśli chcesz wiadomość, (nie masaż), spróbuj tego,

validates :phone, :presence => {:message => 'hello world, bad operation!'}, 
        :numericality => true, 
        :length => { :minimum => 10, :maximum => 15 } 

Sprawdź również this pytanie.

1

Spróbuj tego:

validates_format_of :phone, :with => /\d[0-9]\)*\z/ , :message => "Only positive number without spaces are allowed" 
+0

Działa to, gdy próbuję wprowadzić alfabet po raz pierwszy. Ale jeśli wpisam "1234lkgfdgdkj" po zapisaniu 1234, pokazuje to, że profil został pomyślnie zaktualizowany. Jeśli sprawdzisz numer telefonu z konsoli, wartość będzie nadal wynosić 1234, ale nie otrzymam flash [: error] –