我无法弄清楚如何解决这个问题!请帮忙!!
"undefined method `description' for nil:NilClass"
使用以下代码得出结果:
<ul>Test Search:
<% @optsolr.each do |c| %>
<li>
<%= c.description %>
</li>
<% end %>
</ul>
当我只打电话给&#34; c&#34;而不是c.description,结果是: 测试搜索:
" [#<Nmodel id: 44, name: nil, price: nil, expiration: "2012-02-22", category: "Life ", description: "my description text", user_id: 3, created_at: "2012-02-22 04:20:48", updated_at: "2012-02-22 04:20:48", quantity: nil>]"
我的控制器,我遍历一组搜索参数并搜索特定类别:
@search = Nmodel.search do
fulltext o.category do
query_phrase_slop 16
end
end
@optsolr[count[ = @search.results
rails debug的结果: --- - !!空值 - !!空值 - - !ruby / object:Nmodel 属性: id:44 name:!! null 价格:!! null 到期日:2012-02-22 类别:! &#39;生活&#39; 描述:我的描述文字 user_id:3 created_at:2012-02-22 04:20:48.048506000Z updated_at:2012-02-22 04:20:48.048506000Z 数量:!! null
答案 0 :(得分:3)
我想从这个Results from rails debug: --- - <<<<!!null >>>>>- <<<<!!null>>>>> - - <<<<!ruby/object:Nmodel attributes: id: 44
..它返回两个空记录和一个有效记录。
试试这个。
<ul>Test Search:
<% @optsolr.delete_if{|ele| ele.blank?}.each do |c| %>
<li>
<%= c.description %>
</li>
<% end %>
</ul>
答案 1 :(得分:0)
一种可能性......太阳黑子搜索返回数据库中不再存在的对象的ID。这种情况可能发生,特别是在开发过程中,如果您已经索引了一个对象,然后从数据库中删除了该行(可能是通过删除数据库?)而不从Solr中删除它。