【发布时间】:2018-06-29 08:53:23
【问题描述】:
我正在 Rails 中进行多面搜索。它来自我之前的问题:Rails: How to use facets with search results
我能做的是使用范围来获取与搜索结果相关的所有方面,如图所示:
我目前的工作是使用构面文本作为链接,为我们已经获得的搜索结果添加额外的参数。
对此我有两个问题:
- 如何获取现有搜索 URL 并添加链接以在单击链接时添加/合并参数。我正在使用不起作用的参数合并。 代码如下。
<h3 style = "color:#7C064D; text-align: center;"><strong>CYLINDER</strong></h3>
<%- @listings_cylinder.each do |key, value| -%>
<h5 style = "color:#F00000; text-align: left;"><strong><%= link_to "#{key.upcase if key} (#{value})" , search_listings_path(params.merge(:cylinder => "#{key}")) %> </strong></h5>
<% end %>
- 如何同时使用多个过滤器。我想要的是当点击一个方面链接时,它应该在下面添加一个小过滤器链接 图片中的排序链接。当用户想要撤消该构面过滤器时 效果,他点击那个小链接上的 X 并进入搜索 不带过滤器的查询。与hotels.com 或 priceline.com 如图所示:
注意:我不想使用 solr/elaticsearch,因为这不是最好的用例。我想从头开始学习。我已经能够使用简单的导轨构建构面文本。只要有一点帮助,我就能做到。
代码:
我正在使用的范围:
scope :listing_search_cities, -> {group(:city).count}
scope :listing_search_body_type, -> {group(:bodytype).count}
scope :listing_search_states, -> {group(:state).count}
scope :listing_search_newused, -> {group(:NewUsed).count}
scope :listing_search_transmission, -> {group(:transmission).count}
scope :listing_search_cylinder, -> {group(:cylinder).count}
scope :listing_search_fuel, -> {group(:fuel).count}
scope :listing_search_drive, -> {group(:drive).count}
scope :listing_search_trim, -> {group(:trim).count}
scope :listing_search_color, -> {group(:color).count}
scope :listing_search_year, -> {group(:year).count}
scope :listing_search_interiorcolor, -> {group(:interiorcolor).count}
在控制器搜索动作中,我使用的是:
def search
@listings = Listing.search(params)
@listings_cities = @listings.listing_search_cities
@listings_bodytype = @listings.listing_search_body_type
@listings_states = @listings.listing_search_states
@listings_newused = @listings.listing_search_newused
@listings_cylinder = @listings.listing_search_cylinder
@listings_transmission = @listings.listing_search_transmission
@listings_drive = @listings.listing_search_drive
@listings_trim = @listings.listing_search_trim
@listings_fuel = @listings.listing_search_fuel
@listings_color = @listings.listing_search_color
@listings_interiorcolor = @listings.listing_search_interiorcolor
@listings_year = @listings.listing_search_year
end
在视图中,我正在使用这样的键值迭代:
<%- @listings_cylinder.each do |key, value| -%>
<h5 style = "color:#F00000; text-align: left;"><strong><%= link_to "#{key.upcase if key} (#{value})" , search_listings_path(params.merge(:cylinder => "#{key}")) %> </strong></h5>
<% end %>
【问题讨论】:
-
您可能只需要在用户单击或删除构面时使用 javascript。然后从 javascript 导航到 URL
-
@praga2050 任何示例、博客或教程,您都可以指向哪个获取搜索 URL 并向其添加新参数?
标签: javascript jquery ruby-on-rails search faceted-search