我想使用隐藏字段参数(colour_id)来优化我对与特定颜色相关的面料的搜索。
面料有多种颜色、供应商和类别
但是,我希望搜索表单(color_ids)中隐藏字段的参数过滤织物,以便仅搜索与这些颜色相关的织物。
从我收集到的最好的方法是在我的搜索中添加范围,并将这些隐藏字段的参数传递给范围,以将搜索结果缩小到仅与这些颜色相关联的面料。
我的面料模型看起来像这样
class Fabric < ActiveRecord::Base
has_many :fabric_categories
has_many :categories, :through => :fabric_categories
has_many :suppliers, :through => :fabric_suppliers
has_many :fabric_suppliers
has_many :colours, :through => :fabric_colours
has_many :fabric_colours
# solr search method
searchable do
text :name, :boost => 5
text :description
text :categories do
categories.map(&:name)
end
text :suppliers, :boost => 2 do
suppliers.map(&:name)
end
end
我的控制器
class FabricsController < ApplicationController
def index
@search = Fabric.search do
fulltext params[:search]
#scoped assets
@fabrics = @search.results
和我的看法
<%= form_tag fabrics_path, :method => :get, :class => 'form-search' do %>
<%= text_field_tag :search, params[:search], :class => 'query', id: "auto_complete", :placeholder => '', :autocomplete => "off" %>
<div id="colour_ids">
<%= hidden_field_tag :colour_1 %>
</div>
<%= submit_tag "Search", :name => nil, :class => 'btn', :id => 'search_button' %>
<% end %>