这是代码:
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)}
]
)
Tin Man 建议的 gsub 方法让我几乎到了那里 - 只有在我的数据库中的 :phone 字段中搜索时,它才会从搜索字符串中删除任何非数字字符。
最后一个问题是数据库中的 :phone 字段实际上可能包含非数字(我希望允许用户输入他们想要的电话号码),所以我需要在搜索时暂时忽略破折号(使用在 Mongo 中找到())
不知道我是否应该在自动完成功能的这个级别执行它,或者我是否应该在 autocomplete.js 模块中执行它......
摘要 - 我想 :phone.gsub(/\D+/,'') 但 gsub 仅适用于字符串,而不是这样的参考。