2012-05-09 23 views
7

Estoy tratando de validar si el número de teléfono es un dígito o no: -Validación del número de teléfono con un rubí de expresiones regulares

Ésta es mi user.rg

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


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

Esta es mi view.html .haml

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

Esto es controlador

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 

Cuando ingreso el número en el campo de texto por primera vez, lo valida de inmediato, pero si ingreso el formato correcto y luego intento ingresar el formato incorrecto, omite las validaciones y recibo un mensaje instantáneo de que el perfil se ha actualizado con éxito, sin embargo el valor incorrecto (con letras) no se guarda.

¿Cuál podría ser el problema aquí?

+0

Al menos higienizar el campo un poco. Cuando recibo mensajes como "no se permiten espacios en blanco", me pongo "noobs otra vez". – Reactormonk

Respuesta

9

Utilizo esto,: con => "no hay problema".

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

Si quieres un mensaje, (no un masaje), probar esto,

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

también comprobar this cuestión.

1

Prueba esto:

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

Esto funciona si intento ingresar alfabetos por primera vez. Pero si ingreso, diga "1234lkgfdgdkj" después de que se guardó 1234, se muestra que el perfil se actualizó correctamente. Si comprueba el número de teléfono de la consola, el valor sigue siendo 1234 pero no aparece el flash [: error] –

Cuestiones relacionadas