[英]Added Tire search gem, how to add multiple indexes?
我有一個想要搜索的song.rb模型和genre.rb模型。
由於某種原因,Tire只返回歌曲的搜索結果,而不返回流派的搜索結果。
編碼:
genre.rb
class Genre < ActiveRecord::Base
has_many :genre_songs, :dependent => :destroy
has_many :songs, through: :genre_songs
include Tire::Model::Search
include Tire::Model::Callbacks
end
song_controller片段
def index
if params[:query].present?
@songs = Song.search(params[:query], load: true)
elsif params[:genre]
@songs = Song.tagged_with(params[:genre]).paginate(:page => params[:page], :per_page => 15)
get_last_song
else
@songs = Song.order('id').order('plusminus desc nulls last').paginate(:page => params[:page], :per_page => 15)
#@songs = Song.tally.paginate(:page => params[:page], :per_page => 15)
get_last_song
end
end
song.rb代碼段
include Tire::Model::Search include Tire::Model::Callbacks
index.html.erb代碼段
<%= form_tag songs_path, method: :get do %>
<p>
<%= text_field_tag :query, params[:query] %>
<%= submit_tag "Search", name: nil %>
</p>
<% end %>
在控制器中:
@songs = Song.search(params)
在歌曲模型中:
def self.search(params)
tire.search(load: true, page: params[:page], per_page: 15) do
query { string params[:query], default_operator: "AND" } if params[:query].present?
end
end
def to_indexed_json
to_json(methods: [:genre_names])
end
def genre_names
genres.map{ |g| g.name}
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.