我並沒有發佈手機從形式字符串和數值分離
def update_phone
if params[:phone]
#here I want to check weather params[:phone] is number or string
end
我沒有使用params[:phone].class
它總是顯示字符串類。我怎麼能找到字符串或整數?
我並沒有發佈手機從形式字符串和數值分離
def update_phone
if params[:phone]
#here I want to check weather params[:phone] is number or string
end
我沒有使用params[:phone].class
它總是顯示字符串類。我怎麼能找到字符串或整數?
編輯,感謝評論。我認爲這適用於大多數常見的情況。但是,這不會帶前導零的工作:
str = params[:phone]
#it is numeric if the following is true:
str.to_f.to_s == str || str.to_i.to_s == str
這不是真的http://ideone.com/d3YMK – Hauleth
在Ruby中,你大多不上的類型,但對變量的行爲進行操作。如果你想chceck params[:phone]
是有效的電話號碼使用正則表達式,我。 e .:
phone = params[:phone] if params[:phone] =~ /\A\(?\d{3}\)?-?\d{3}-?\d{3}\Z/
但更好的選擇是在你的模型驗證器中檢查這個。
感謝Hauleth送我正確的方式.. –
你應該使用一些Validators模型中的一個正則表達式組合電話號碼:根據貴國的電話號碼的系統上只有數字和一些格式字符,如+-./()
和空間應該被允許:+23 (0) 322/242324-12
或234.1432.123
都是有效數字。
這是一個嚴重的混亂。你的問題是什麼?請'編碼'你的代碼。在某人被標記或關閉之前立即編輯您的問題。 – Roylee
謝謝Roylee可以理解我的問題是什麼? –