下面是代碼:我在哪裏可以選擇忽略特殊字符與Regexp.new?
def autocomplete
if(params[:terms])
key = params[:terms]
customers = Customer.where(:$or => [
{:first_name => Regexp.new(/^#{key}/i)},
{:last_name => Regexp.new(/^#{key}/i)},
{:email => Regexp.new(/^#{key}/i)},
#{:phone => Regexp.new(/^#{key}[d+]/i)},
{:phone => Regexp.new(/^#{key.gsub(/\D+/,'')}/)},
{:zip_code => key.to_i },
{:street1 => Regexp.new(/#{key}/i)},
{:street2 => Regexp.new(/#{key}/i)}
]
)
由鐵皮人提出的GSUB方法讓我幾乎沒有 - 這條從搜索字符串的搜索,只有當任何非數字字符:在我的DB手機領域。
最後一個問題是數據庫中的phone域可能實際上包含非數字(我想讓用戶輸入他們想要的電話號碼),所以我需要暫時忽略破折號,米搜索(使用蒙戈find()方法)
不知道我是否應該在這個級別中的自動完成功能,或者我應該這樣做的autocomplete.js模塊中做到這一點...
摘要 - 我想要:phone.gsub(/ \ D + /,'')但gsub只適用於字符串,而不是像這樣的引用。
你想要一個正則表達式模式,所以你可以匹配'808949',如果你通過'808-949'或反之亦然?不能以任何方式達到目標。我們需要您嘗試匹配的數據和輸入值的更好樣本。 – 2013-05-05 05:10:27
如果你不是程序員,你可能不應該試圖修復錯誤。你有沒有考慮聘請某人? – pguardiario 2013-05-05 10:16:50
我聘請的公司正在編寫代碼。我是上述代碼的可憐的非程序員所有者,並且盡我所能去學習和理解 - 獲得足夠的基礎以便能夠打電話廢話,而無需自己成爲開發人員。 我知道有足夠的人來問我比我更聰明的一個問題,我不明白。 – notaceo 2013-05-06 20:26:53