我希望用户能够轻松找到系列,因此希望设置构面。我已经按照seachkick的指示进行了,并且一切正常,但是当我设置Facets时,得到了以下回报。我希望它像他们的文档一样。希望有人能帮忙。
我在myapp.com/movies中得到了
{ "name"=> { "_type"=> "terms", "missing"=> 0, "total"=> 1, "other"=> 0, "terms"=> [ { "term"=> "Bloop", "count"=> 1 } ] }, "imdb"=> { "_type"=> "terms", "missing"=> 0, "total"=> 1, "other"=> 0, "terms"=> [ { "term" => "http://www.bloop.com", "count" => 1 } ] } }
#app/views/movies/index.html.erb <%= p @series.facets %>
#app/controllers/movies_controller.rb def index query = params[:query].presence || "*" @movies = Movie.search(query, page: params[:page], suggest: true, per_page: 20, facets: [:name, :imdb]) end
#db/schema.rb create_table "movies", force: true do |t| t.string "name" t.text "description" t.string "imdb" t.string "year" t.datetime "created_at" t.datetime "updated_at" end
通过执行以下操作,终于使它正常工作。不知道这是否是最好的方法,但是它有效!希望对您有所帮助,如果您有任何改进或建议,请随时告诉我。
# app/models/movie.rb def self.facets_search(params) query = params[:query].presence || "*" conditions = {} conditions[:year] = params[:year] if params[:year].present? movies = Movie.search query, where: conditions, facets: [:year], smart_facets: true, page: params[:page], suggest: true, highlight: true, per_page: 10 movies end
。
# app/controllers/movies_controller.rb def index @movies = Movie.facets_search(params) end
# app/views/movies/index.html.erb <% if @movies.facets["year"]["terms"].present? %> <div> <ul> <% @movies.facets["year"]["terms"].each do |filter| %> <li><%= link_to "#{filter["term"]} (#{filter["count"]})", "/movies?year=#{filter["term"]}" %></li> <% end %> </ul> </div> <% end %>