Ruby on rails 通过关联实现太阳黑子搜索的问题

Ruby on rails 通过关联实现太阳黑子搜索的问题,ruby-on-rails,sunspot,sunspot-rails,sunspot-solr,Ruby On Rails,Sunspot,Sunspot Rails,Sunspot Solr,我在实现太阳黑子时遇到了一些问题!在过去的两天里,我一直在努力让它工作,但我似乎找不到任何解决方案(尽管毫无疑问,它一直盯着我的脸!) 我希望用户能够搜索一个汽车制造商。创建车辆时,将通过关联为其指定制造商(如下所示)。现在我如何允许用户输入搜索字段(或者更好地选择所有制造商的集合)并将结果过滤掉 在一个理想的世界里,我希望这能成为我的搜索: <%= simple_form_for :search, url: vehicles_path , :method => :get do |

我在实现太阳黑子时遇到了一些问题!在过去的两天里,我一直在努力让它工作,但我似乎找不到任何解决方案(尽管毫无疑问,它一直盯着我的脸!)

我希望用户能够搜索一个汽车制造商。创建车辆时,将通过关联为其指定制造商(如下所示)。现在我如何允许用户输入搜索字段(或者更好地选择所有制造商的集合)并将结果过滤掉

在一个理想的世界里,我希望这能成为我的搜索:

<%= simple_form_for :search,  url: vehicles_path , :method => :get do |f| %>
    <%= select_tag :manufacturer, options_from_collection_for_select(Manufacturer.all, :id, :name) %> 
    <%= submit_tag "Search", :name => nil %>
<% end %>

问题在于您在控制器中执行搜索的方式。 您曾说过,在理想情况下,您希望从选择元素中选择制造商:

<%= simple_form_for :search,  url: vehicles_path , :method => :get do |f| %>
<%= select_tag :manufacturer, options_from_collection_for_select(Manufacturer.all, :id, :name) %> 
<%= submit_tag "Search", :name => nil %>
太阳黑子文件说:

未定义为文本的字段(例如,整数、布尔值、时间等)可用于在执行全文匹配之前确定(限制)查询的范围


您可以找到有关作用域的更多信息:

问题在于您在控制器中执行搜索的方式。 您曾说过,在理想情况下,您希望从选择元素中选择制造商:

<%= simple_form_for :search,  url: vehicles_path , :method => :get do |f| %>
<%= select_tag :manufacturer, options_from_collection_for_select(Manufacturer.all, :id, :name) %> 
<%= submit_tag "Search", :name => nil %>
太阳黑子文件说:

未定义为文本的字段(例如,整数、布尔值、时间等)可用于在执行全文匹配之前确定(限制)查询的范围

您可以找到有关范围界定的更多信息:

class Manufacturer < ActiveRecord::Base
    has_many :vehicles

    searchable do
        text    :name
    end

    def to_s
        self.name
    end

end
    <%= form_tag vehicles_path, :method => :get do %>
        <%= text_field_tag :search, params[:search] %>
        <%= submit_tag "Search", :name => nil %>
    <% end %>
<%= simple_nested_form_for @vehicle, :html=>{:multipart => true } do |f| %>

  <%= f.error_notification %>

  <div class="form-inputs">
    <%= f.input :name %>
    <%= f.association :manufacturer, include_blank: false %>
</div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>

 <% end %>
    #integer :manufacturer_id, :multiple => true

    #integer :manufacturer_id, :references => Manufacturer, :multiple => true

    #integer :manufacturer_id, :references => Manufacturer, :multiple => true do
    #   manufacturers.map {|manufacturer| manufacturer.manufacturer_name}
    #end

    #text :manufacturer_names do |manufacturer|
    #  manufacturer.name { |manufacturer| manufacturer.name }
    #end 

    #integer :manufacturer_id {|manufacturer| manufacturer.name }

    #string :manufacturer_name do
    #   manufacturer.name { |manufacturer| manufacturer.name }
    #end

    #text :manufacturers do
    #   manufacturers.map { |manufacturer| manufacturer.name }
    #end

    #integer :manufacturer_id, :stored => true
<%= simple_form_for :search,  url: vehicles_path , :method => :get do |f| %>
<%= select_tag :manufacturer, options_from_collection_for_select(Manufacturer.all, :id, :name) %> 
<%= submit_tag "Search", :name => nil %>
class VehiclesController < ApplicationController
  def index
    @search = Vehicle.search do
      # Scope the query
      with :manufacturer_id, params[:manufacturer]
    end

    @vehicles = @search.results
  end
end