Я предоставляю пользователю возможность поиска с использованием любой нечувствительной к регистру подстроки для множества полей.
Есть ли в рельсах лучший способ добиться этого, чем показано ниже?Я разрешаю пользователю выбрать поле для поиска.Вместо того, чтобы использовать html-значения и получать входные данные напрямую, я преобразовываю входные данные в поле в моем контроллере отчасти из-за нежелания пользователей потенциально искать то, что они хотят, и не выдавая информацию базы данных в HTML.
Я тоже слишком осторожен?Правильное количество осторожных?
Контроллер:
def sort_accepts
sort_criteria = params[:sort_by]
sort_criteria_map = {"Offer Number" => "offer_number", "Tracking Number" => "track_number", "Customer Name" => "customer_name", "Promo Code" => "promo_code"}
@cart_list = Cart.where("#{sort_criteria_map[sort_criteria]} ILIKE ?", "%#{params[:search_term]}%").order(created_at: :desc)
end
Просмотр:
<%= form_tag sort_offers_path, authenticity_token: true, remote: true do %>
<%= select_tag(:sort_by, options_for_select(["Offer Number","Tracking Number","Customer Name","Promo Code"],["Offer Number"]), class: 'form-control') %>
<%= text_field_tag :search_term, nil, maxlength: '50', placeholder: 'Search Term' %>
<%= button_tag(type: 'Search', name: 'Sort', value: true, data: { disable: true }) do %>
<% end %>
Я также планирую добавить ограничение на 2 или 3 символа для строки поискапоэтому пользователи не могут вывести всю таблицу, выполнив поиск nil