Я использую Sunspot Solr для детализации с многогранным поиском. Однако у меня возникла проблема при попытке отобразить значения фасета, отсортированные в том порядке, в котором они должны быть. Мои товары могут иметь размеры (S, M, L, XL, XXL), а некоторые товары имеют разные размеры, например размеры обуви (8, 9, 10, 11, 12, 13). При установке для метода facet.sort значения 'index' он помещает строковые значения в алфавитном порядке, что приводит к [L, M, S, XL, XXL] и [10, 11, 12, 8, 9] соответственно. Что было бы хорошим методом для достижения настраиваемого метода сортировки для достижения этих целей?
Мой контроллер:
@search = Product.search do
fulltext params[:search]
facet(:size, :sort => :index)
with(:size, params[:size]) if params[:size].present?
end
Мой взгляд:
<% for row in @search.facet(:brand).rows %>
<li>
<% if params[:brand].blank? %>
<%= link_to link_to "#{row.value} (#{row.count})", params.merge({:brand => row.value}) %>
<% else %>
<strong><%= row.value %></strong> (<%= link_to "remove", params.merge({:brand => nil}) %>)
<% end %>
</li>
<% end %>
Полученная сортировка, которая отображается
SIZE
L (10)
M (10)
S (10)
XL (10)
XXL (10)