コードは次のとおりです。
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 メソッドは、ほとんどそこに到達します。DB の :phone フィールドで検索する場合にのみ、検索文字列から数字以外の文字を取り除きます。
最後の問題は、DB の :phone フィールドに実際には非数字が含まれている可能性があることです (そして、ユーザーが好きなように電話番号を入力できるようにしたい) ため、検索するときにダッシュを一時的に無視する必要があります ( find() モンゴ)
autocomplete 関数でこのレベルで行うべきか、autocomplete.js モジュールで行うべきかはわかりません...
概要 - :phone.gsub(/\D+/,'') を実行したいのですが、gsub は文字列に対してのみ機能し、このような参照では機能しません。