【问题标题】:Label rows for range facets sunspot solr范围面太阳黑子 solr 的标签行
【发布时间】:2014-10-27 11:54:36
【问题描述】:

我在我的 rails 应用程序中使用 sunspot solr 来处理搜索,并且我设置了一个方面以允许在价格范围内进行搜索。如何创建标签以用于视图中的行值。这个article here 建议使用条件语句,但我不知道该怎么做。

例如,而不是显示为:

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 %>

【问题讨论】:

    标签: ruby-on-rails solr range sunspot facet


    【解决方案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] %>
    

    【讨论】:

    • 它给了我这个错误undefined method 'gsub' for 0.0..75.0:Range
    • 是的,就是这样。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 2014-08-22
    • 2014-03-29
    相关资源
    最近更新 更多