我刚开始学习ROR,我需要帮助。
我有两张桌子,我需要使用Sunspot solr搜索它们。搜索可能会查找公司和标题等内容,因此,如何使用太阳黑子solr(ROR)组织搜索两个表?
section.rb
class Section < ActiveRecord::Base
has_many :headings
searchable do
text :name
end
end
heading.rb
class Heading < ActiveRecord::Base
belongs_to :section
searchable do
text :name
text :address
text :phone
end
end
标题控制器
def index
@sections = Section.all
@headings = Heading.all
@search = Sunspot.search(Heading, Section) do
fulltext params[:search]
end
@headsear = @search.results
end
def show
@se = Section.all
@sections = Section.all
@headings = Heading.find(params[:id])
@sections = Section.find(params[:id])
end
标题/ _search.html.erb
<%= form_tag headings_path, :method => :get do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
答案 0 :(得分:0)
在你的变量@headsear中你有两个:标题对象和节对象 如果您希望将这些结果分为2个变量,则可以调用两次搜索方法:
@headings = Heading.search {fulltext params[:search]}
@sections = Section.search {fulltext params[:search]}
另一个解决方案是仅搜索标题并使用与Section:
的关系您需要将节数据编入Heading类,如下所示: 的 heading.rb 强>
class Heading < ActiveRecord::Base
belongs_to :section
searchable do
text :name
text :address
text :phone
text(:section_name) { section.name }
end
end
在此之后,当一个部分的名称与搜索参数匹配时,结果将包含所有与标题对象相关的
希望得到这个帮助。
答案 1 :(得分:0)
Sunspot.search Heading, Section do
fulltext params[:search]
end