我有这个型号:
class Book < Item
validates :isbn, :presence => true, :uniqueness => true
has_many :book_chapters
has_many :chapters, :through => :book_chapters
searchable :auto_index => true, :auto_remove => true do
text :title
end
end
然后我有这个控制器:
class HomeController < ApplicationController
def index
@search = Book.search do
fulltext params[:search]
end
@books = @search.results
[... normal rest of code ...]
end
end
字段“title”继承自更通用的Item模型。当Home控制器尝试执行搜索时,我收到此错误:
HomeController中的NoMethodError #index
未定义的方法`关闭?'为零:NilClass
日志中还有这个附加警告:
DEPRECATION WARNING:不推荐使用class_inheritable_attribute,请改用class_attribute方法。请注意它们的行为略有不同,因此请首先参阅class_attribute文档。 (来自/Users/xxx/Sites/zigzag/app/models/book.rb:7)
指的是这一行:
可搜索:auto_index =&gt; true,:auto_remove =&gt;是的
在book.rb中
为什么我收到此错误的任何想法?在堆栈溢出的其他类似帖子中,似乎人们忘了打开太阳黑子服务器。但我正在运行它,它运行正常。我可以很好地导航Solr Admin。谢谢!
答案 0 :(得分:0)
我明白了。我在Mac OS Lion 10.7.2上运行此应用程序。问题是rails应用程序确实没有连接在太阳黑子服务器中。但原因不是因为太阳黑子服务器丢失了。这是因为rails正在使用IPv4地址,而太阳黑子则期待IPv6地址。修复的第一部分是更改sunspot.yml配置文件,使主机名为127.0.0.1而不是“localhost”。然后,在/ etc / hosts中,注释掉以下行:
#::1 localhost
#fe80::1%lo0 localhost
这样'localhost'只映射到127.0.0.1(在/ etc / hosts /中的其他地方指定)。就是这样!
答案 1 :(得分:0)
一个简单的答案是你可能没有开始你的太阳黑子索尔。尝试运行此rake命令:
rake sunspot:solr:start