[英]Solr - undefined method `results' for Ransack
我正在Ruby on Rails上的一个项目上,想要添加搜索功能。 我按照此网站上的步骤安装了solr gem: http : //es.asciicasts.com/episodes/278-busquedas-con-sunspot
现在,这就是我的控制器的外观:
class DealsController < ApplicationController
def index
# @deals = Deal.paginate(page: params[:page])
@search = Deal.search do
fulltext params[:search]
end
@deals = @search.results
end
private
def deal_params
params.require(:deal).permit(:title)
end
end
这是我的模型:
class Deal < ActiveRecord::Base
searchable do
text :title, :info1, :page
end
end
这是我的看法:
<div class='container'>
<div class='row upper_container'>
<div class='search_container'>
<%= form_tag deals_path, :method => :get, :class => 'navbar-form navbar-left' do %>
<div class='form-group'>
<%= text_field_tag :search, params[:search], class: 'form-control' %>
</div>
<%= submit_tag 'Search', :name => nil %>
<% end %>
</div>
</div>
<% @deals.each_with_index do |d, i| %>
<% if i % 3 == 0 %>
<div class='row middle_container'>
<% end %>
<div class='col-md-4'>
<div class='deal_container'>
<%= d.title %>
<img src='<%= d.photo %>'>
</div>
</div>
<% if (i % 3 == 2) || (i == (@deals.length - 1)) %>
</div>
<% end %>
<% end %>
<div class='text-center'>
<%= will_paginate @deals %>
</div>
</div>
但我得到以下错误:
Ransack :: Search>:Ransack :: Search的未定义方法`results'
在这一行: @deals = @search.results
有什么帮助吗? 谢谢!
裘德,改变你的
@deals = @search.results
至
@deals = @search.result
您是否偶然使用了黑子宝石?
如果您将Active Admin和Sunspot gem用于Rails,请当心:它们在搜索方法上会发生冲突,从而导致一些令人困惑的结果。
Active Admin依赖meta_search,它对Active Record类提供了.search()方法。 Sunspot尝试提供以solr_search为别名的相同方法,但前提是该方法尚不存在。
简而言之,可以使用solr_search()而不是 search() 来完成 搜索:
@search = Profile.solr_search do
keywords params[:q]
paginate page: params[:page], per_page: page_size
end
@results = @search.results
http://mrdanadams.com/2012/beware-using-active_admin-and-sunspot-rails-gems-together/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.