简体   繁体   English

Solr-Ransack的未定义方法“结果”

[英]Solr - undefined method `results' for Ransack

I'm working on a project on Ruby on rails and wanted to added a search feature. 我正在Ruby on Rails上的一个项目上,想要添加搜索功能。 I installed the solr gem following the steps from this site: http://es.asciicasts.com/episodes/278-busquedas-con-sunspot 我按照此网站上的步骤安装了solr gem: http : //es.asciicasts.com/episodes/278-busquedas-con-sunspot

right now, this is how my controller looks like: 现在,这就是我的控制器的外观:

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

this is my model: 这是我的模型:

class Deal < ActiveRecord::Base    
  searchable do  
    text :title, :info1, :page 
  end 
end

and this is my view: 这是我的看法:

<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>

But i get the following error: 但我得到以下错误:

undefined method `results' for Ransack::Search>:Ransack::Search Ransack :: Search>:Ransack :: Search的未定义方法`results'

on this line: @deals = @search.results 在这一行: @deals = @search.results

Any help? 有什么帮助吗? thanks! 谢谢!

Jude, change your 裘德,改变你的

@deals = @search.results 

to

@deals = @search.result

Are you by chance using the sunspot gem? 您是否偶然使用了黑子宝石?

If you are using Active Admin and the Sunspot gem for Rails, beware: they conflict on the search method leading to some very confusing results. 如果您将Active Admin和Sunspot gem用于Rails,请当心:它们在搜索方法上会发生冲突,从而导致一些令人困惑的结果。

Active Admin has a dependency on meta_search which provides a .search() method on Active Record classes. Active Admin依赖meta_search,它对Active Record类提供了.search()方法。 Sunspot attempts to provide the same method, aliased from solr_search, but only if the method does not already exist. Sunspot尝试提供以solr_search为别名的相同方法,但前提是该方法尚不存在。

In short, searching can be done using solr_search() rather than 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/ http://mrdanadams.com/2012/beware-using-active_admin-and-sunspot-rails-gems-together/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Ransack:未定义的方法“结果” - Ransack : Undefined Method “result” Ransack未定义方法`空? - Ransack undefined method `empty?' 未定义的方法“结果”与太阳黑子Solr搜索 - undefined method “results” with Sunspot Solr Search Ransack :: Search的未定义方法`name_cont&#39; - undefined method `name_cont' for Ransack::Search Ruby on Rails:Ransack未定义的方法`result` - Ruby on Rails: Ransack undefined method `result` 生产NoMethodError中的Ransack错误(未定义的方法“搜索”为 - Ransack error in production NoMethodError (undefined method `search' for #的未定义方法“ ransack” <Product::ActiveRecord_Relation…> - undefined method `ransack' for #<Product::ActiveRecord_Relation…> Ransack:过滤器活动管理员中未定义的方法名称 - Ransack: Undefined method name in filter active admin Ransack :: Search的未定义方法`boarding_eq&#39; <class: School, base: Grouping <combinator: and> &gt;:洗劫::搜索 - undefined method `boarding_eq' for Ransack::Search<class: School, base: Grouping <combinator: and>>:Ransack::Search Ransack :: Search的未定义方法“ all” <class: Post, base: Grouping <combinator: and> &gt;:背架::搜索 - undefined method `all' for Ransack::Search<class: Post, base: Grouping <combinator: and>>:Ransack::Search
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM