2012-06-21 53 views
0

我並沒有發佈手機從形式字符串和數值分離

def update_phone 
    if params[:phone] 
    #here I want to check weather params[:phone] is number or string 
end 

我沒有使用params[:phone].class它總是顯示字符串類。我怎麼能找到字符串或整數?

+0

這是一個嚴重的混亂。你的問題是什麼?請'編碼'你的代碼。在某人被標記或關閉之前立即編輯您的問題。 – Roylee

+0

謝謝Roylee可以理解我的問題是什麼? –

回答

0

編輯,感謝評論。我認爲這適用於大多數常見的情況。但是,這不會帶前導零的工作:

str = params[:phone] 

#it is numeric if the following is true: 
str.to_f.to_s == str || str.to_i.to_s == str 
+0

這不是真的http://ideone.com/d3YMK – Hauleth

1

在Ruby中,你大多不上的類型,但對變量的行爲進行操作。如果你想chceck params[:phone]是有效的電話號碼使用正則表達式,我。 e .:

phone = params[:phone] if params[:phone] =~ /\A\(?\d{3}\)?-?\d{3}-?\d{3}\Z/ 

但更好的選擇是在你的模型驗證器中檢查這個。

+0

感謝Hauleth送我正確的方式.. –

0

你應該使用一些Validators模型中的一個正則表達式組合電話號碼:根據貴國的電話號碼的系統上只有數字和一些格式字符,如+-./()和空間應該被允許:+23 (0) 322/242324-12234.1432.123都是有效數字。