Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 标记范围面太阳黑子solr的行_Ruby On Rails_Solr_Range_Sunspot_Facet - Fatal编程技术网

Ruby on rails 标记范围面太阳黑子solr的行

Ruby on rails 标记范围面太阳黑子solr的行,ruby-on-rails,solr,range,sunspot,facet,Ruby On Rails,Solr,Range,Sunspot,Facet,我在rails应用程序中使用sunspot solr来处理搜索,并且我已经设置了一个facet来允许搜索价格范围。如何创建用于视图中行值的标签。这建议使用条件语句,但我不确定我将如何做到这一点 因此,例如,代替如下所示的值: 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

我在rails应用程序中使用sunspot solr来处理搜索,并且我已经设置了一个facet来允许搜索价格范围。如何创建用于视图中行值的标签。这建议使用条件语句,但我不确定我将如何做到这一点

因此,例如,代替如下所示的值:

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
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
<% for row in @search.facet(:price).rows %>
    <span class="bprice">
        <%= link_to row.value, :price_range => row.value, :search => params[:listings] %>
    </span>
<% end %>
/controllers/listings\u controller.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
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
<% for row in @search.facet(:price).rows %>
    <span class="bprice">
        <%= link_to row.value, :price_range => row.value, :search => params[:listings] %>
    </span>
<% end %>
/views/listings/index.html.erb

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

row.value,:search=>params[:listings]>

这只是一个正则表达式替换的问题吗

试试这个:

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] %>
row.value,:search=>params[:listings]>

它给了我这个错误
0.0..75.0:Range的未定义方法“gsub”
是的,就是它。谢谢