2015-02-10 3 views
0

У меня есть фильтр поиска поля на docket_id или адрес, как с групповыми символами до и после, на столе заказов, как показано ниже: -Использование Wildcard после Like при использовании params.has_key

if params.has_key?("docket_id_filter") 
    @orders = @orders.where("docket_id like ? OR address like ?", "%#{params[:docket_id_filter]}%", "%#{params[:docket_id_filter]}%") 
end 

У меня есть проблема, когда пользователи копируют и вставляют значение в поле поиска с «возвратом каретки» или пробелом после номера.

Это не возвращает никаких значений, поскольку оно не соответствует критериям.

код работает на Rails для правильного поиска, как показано ниже: -

Started GET "/orders?utf8=%E2%9C%93&docket_id_filter=6140132790&state_filter=All&day_filter%5Bday%5D=&commit=Filter" for 127.0.0.1 at 2015-02-09 16:09:22 +0800 

в то время как один с пробелом после него, как показано ниже: -

Started GET "/orders?utf8=%E2%9C%93&docket_id_filter=6140099196 &state_filter=All&day_filter%5Bday%5D=&commit=Filter" for 127.0.0.1 at 2015-02-09 16:13:45 +0800 

Как я могу сделать проверить, чтобы последний символ исключил его? Я использую end_with или есть способ игнорировать его или форматировать поле поиска перед запуском кода.

или

Могу ли я проверить последний символ и выдаст ошибку всплывающих Сообщ?

Заранее благодарен

ответ

1

Решено! :-)

if params.has_key?("docket_id_filter") 
    if "docket_id_filter".last(0) == '' 
     @orders = @orders.where("docket_id like ?", "%#{params[:docket_id_filter].first(10)}%") 
    else 
     @orders = @orders.where("docket_id like ? OR address like ?", "%#{params[:docket_id_filter]}%", "%#{params[:docket_id_filter]}%") 
    end 
end