我正在开发一个关于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的未定义方法“结果”::搜索&gt;:Ransack ::搜索
就在这一行:@deals = @search.results
有任何帮助吗?谢谢!
答案 0 :(得分:3)
裘德,改变你的
@deals = @search.results
到
@deals = @search.result
答案 1 :(得分:0)
您是否偶然使用sunspot宝石?
如果您使用Active Admin和Rails的Sunspot gem,请注意: 他们在搜索方法上发生冲突导致一些非常混乱 结果
Active Admin依赖于meta_search,它提供了一个 Active Record类的.search()方法。太阳黑子试图提供 相同的方法,别名来自solr_search,但仅限于方法 尚未存在。
简而言之,可以使用solr_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/