Использование подстановочного знака после лайка при использовании 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