2012-05-09 4 views
7

Sto cercando di convalidare se il numero di telefono è una cifra o no: -Convalida il numero di telefono con un rubino regex

Questo è il mio user.rg

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


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

Questo è il mio view.html .haml

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

Questo regolatore

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 

Quando inserisco il numero nel campo di testo per la prima volta, convalida prontamente, ma se inserisco il formato corretto e poi provo a inserire il formato sbagliato salta le convalide e ricevo un messaggio flash che il profilo è stato aggiornato con successo, tuttavia il valore errato (con lettere) non è stato salvato.

Quale potrebbe essere il problema qui?

+0

Almeno disinfettare il campo un po '. Quando ricevo messaggi come "spazio vuoto non consentito", mi sento di nuovo "noobs". – Reactormonk

risposta

9

Io uso questo,: con => "nessun problema".

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

Se si desidera un messaggio, (non un massaggio), provate questo,

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

controllare anche this domanda.

1

Prova questo:

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

Funziona se provo a inserire gli alfabeti per la prima volta. Ma se inserisco "1234lkgfdgdkj" dopo 1234 è stato salvato mostra che il profilo è stato aggiornato con successo. Se controlli il numero di telefono dalla console il valore è ancora 1234 ma non ottengo il flash [: errore] –