9

電話番号が数字かどうかを検証しようとしています:-

これは私のuser.rgです

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


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

これは私のview.html.hamlです

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

これはコントローラーです

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

テキストフィールドに初めて番号を入力すると、正しく検証されますが、正しい形式を入力してから間違った形式を入力しようとすると、検証がスキップされ、プロファイルが正常に更新されたというフラッシュメッセージが表示されます。間違った値(文字付き)は保存されません。

ここで何が問題になる可能性がありますか?

4

2 に答える 2

18

私はこれを使用します、:with=>"問題ありません"。

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

(マッサージではなく)メッセージが必要な場合は、これを試してください。

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

この質問も確認してください。

于 2012-05-09T12:40:23.943 に答える
2

これを試して:

    validates_format_of :phone, :with =>  /\d[0-9]\)*\z/ , :message => "Only positive number without spaces are allowed"
于 2012-05-09T12:48:46.203 に答える