13

我有一个带有searchable块的模型,如下所示:

class Contact < ActiveRecord::Base
  searchable do
    text :contact_name, :company_name, :contact_email
  end  
end

在控制器的index操作中,我正在调用Contact.new,这会在页面上给我一条错误消息,该页面当前正在我们的暂存服务器上运行:

#<Class:0xce0bf80> 的未定义方法“可搜索”

堆栈跟踪通过控制器中的线路指向searchable模型中的块。Contact.new

当我在网页或控制台上或通过登台服务器上的控制台在本地运行代码时,不会出现此错误 - 仅在登台网页上。

Solr 服务在 Staging 服务器上运行良好,数据已成功建立索引。任何关于为什么它在 Staging 中没有发挥作用的理论都将被接受。

编辑

为了回答尼克在下面的问题,Gemfile 只为太阳黑子提供了这一行:gem 'sunspot_rails'

对于 Gemfile.lock,这些是我可以发现的所有包含 Sunspot 或 Solr 引用的行:

GEM
  rsolr (0.12.1)
    builder (>= 2.1.2)
  sunspot (1.2.1)  
    escape (= 0.0.4)  
    pr_geohash (~> 1.0)  
    rsolr (= 0.12.1)  
  sunspot_rails (1.2.1)  
    nokogiri  
    sunspot (= 1.2.1)

DEPENDENCIES
  sunspot_rails
4

5 回答 5

13

我有同样的问题,我只需要重新启动我的 Rails 服务器。简单的解决方案,但如果不是某个地方的另一篇帖子建议我这样做,我可能会尝试调试错误更长时间,然后再尝试重新启动服务器,呵呵......

于 2012-03-13T14:04:55.343 回答
5

如果您在安装新的 sunspot gem 后忘记重新启动 Rails 服务器,也会发生这种情况

于 2012-07-14T02:23:15.643 回答
0

阅读这篇文章后 ,我了解到问题是因为 rake 任务行阻止了 Sunspot 的加载,我设法通过以下方式解决了它:

我从我的 Rakefile 中删除了以下行 require 'sunspot/rails/tasks'

我创建了一个 sunspot.rake 文件,并向其中添加了来自 sunspot gem 源的以下文件的内容:/gems/sunspot_rails-1.2.1/lib/sunspot/rails/tasks.rb

我知道这是一个 hack,但它正在工作。

于 2012-03-07T15:10:36.387 回答
0

在我看来,gem 没有在您的登台站点上正确加载。如果您可以显示 Gemfile 和 Gemfile.lock 的相关部分,我可以更新更多答案。

编辑——Gemfile 看起来不错。抱歉,如果我无法使用该应用程序,我什么都没有。向 Sunspot 邮件列表报告错误?http://outoftime.github.com/sunspot

于 2011-08-11T19:17:54.470 回答
0

我刚跑spring stop,它修好了

于 2018-06-30T19:11:54.823 回答