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