我为用户提供了使用不区分大小写的子字符串搜索各种字段的功能。
在轨道上,有没有比下面显示的更好的方法了? 我允许用户选择要搜索的字段。而不是使用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来转储整个表