我正在使用太阳黑子进行搜索,它工作正常,我已经实现了一个fecet搜索这是我对facet的看法
<% for row in @search.facet(:company_id).rows %>
<li>
<% if params[:company_id].blank? %>
<%= link_to row.instance.name, :company_id => row.value %> <%= row.count %>
<% else %>
<strong><%= row.instance.name %></strong> (<%= link_to "remove", :month => nil %>)
<% end %>
</li>
<% end %>
这是控制器
def search
@search = Sunspot.search(Job) do
fulltext params[:query]
with(:company_id, params[:company_id]) if params[:company_id].present?
facet :company_id , :limit => 5
paginate(page: params[:page], per_page: 10)
end
@jobs = @search.results
respond_to do |format|
format.html { render :action => "search" }
end
end
但不是在视图中使用link_to我想使用复选框来获得与此类似的内容
我尝试过这个解决方案,但错误<%= check_box_tag row.instance.name, :company_id => row.value %> <%= row.count %>
答案 0 :(得分:0)
我猜是使用复选框是因为你不想刷新页面。 这意味着您必须通过ajax提取此数据。
解决这个问题的一种方法是:
如果您认为这听起来像是针对您的问题的正确方法,则会添加更多详细信息和代码示例。
答案 1 :(得分:0)
您需要创建这样的简单表单:
<%= form_tag request.original_url, method: :get do %>
<% for row in @search.facet(:company_id).rows %>
<li>
<%= label nil, row.instance.name %>
<%= check_box_tag 'company_ids[]', row.value, Array.wrap(params[:company_ids]).include?(row.value.to_s) %>
<%= row.count %>
</li>
<% end %>
<li>
<%= submit_tag 'Send' %>
</li>
<% end %>
并在控制器中修改搜索查询:
...
with(:company_ids, params[:company_ids]) if params[:company_ids].present?
...
如果需要以交互方式进行搜索,则需要在后端附加前端和json(或其他格式)响应中的ajax请求。