Строки меток для диапазонов фасетов солнечных пятен solr

Я использую sunspot solr в своем приложении rails для обработки поиска, и я настроил фасет, позволяющий выполнять поиск по ценовым диапазонам. Как создать метки для значений строк в представлениях. В этой статье предлагается использовать условные операторы, но Я не уверен, как бы я это сделал.

Так, например, вместо значений, отображаемых как:

0.0..75.0
75.0..150.0
150.0..225.0
225.0..300.0

и т.д.. Я хочу отобразить их как:

$0 - $75
$75 - $150
$150 - $225
$225 - $300

Может кто-то помочь мне с этим? Спасибо.

/models/listing.rb

searchable :auto_index => true, :auto_remove => true do
    text :title, :boost => 5
    text :marker_list, :boost => 2
    string :marker_list, :multiple => true, :stored => true
    double :price
end

/controllers/listings_controller.rb

def index
    @listings = Listing.order('created_at desc').page(params[:page]).per_page(60)

    @search = Listing.solr_search do
        fulltext params[:listings]

        facet :price, :range => 0..2000, :range_interval => 75
        with(:price, Range.new(*params[:price_range].split("..").map(&:to_i))) if params[:price_range].present?

    end

    @results = Listing.where(id: @search.results.map(&:id)).page(params[:page]).per_page(60)
end

/views/listings/index.html.erb

<% for row in @search.facet(:price).rows %>
    <span class="bprice">
        <%= link_to row.value, :price_range => row.value, :search => params[:listings] %>
    </span>
<% end %>

person iamdhunt    schedule 27.10.2014    source источник


Ответы (1)


Это просто вопрос замены регулярного выражения?

Попробуй это:

new_string = old_string.gsub(/\.0\.\./,"$ - ").gsub(/\.0/,"$")
# old_string = "0.0..75.0"
# new_string = "0$ - 75$"

Вероятно, это означало бы, что в вашем коде

    <%= link_to (row.value).to_s.gsub(/\.0\.\./,"$ - ").gsub(/\.0/,"$"), 
                :price_range => row.value, :search => params[:listings] %>
person Ruby Racer    schedule 27.10.2014
comment
У меня выдает эту ошибку undefined method 'gsub' for 0.0..75.0:Range - person iamdhunt; 28.10.2014
comment
Да, это было. Спасибо! - person iamdhunt; 28.10.2014