Использование подстановочного знака после лайка при использовании params.has_key

У меня есть фильтр поля поиска для docket_id или адреса, как с подстановочными знаками до и после, в таблице заказов, как показано ниже:-

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

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

или же

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

заранее спасибо

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
Другие вопросы по тегам