2012-02-23 52 views
0

我无法弄清楚如何解决这个问题!请帮忙!!未定义的方法错误轨道3太阳黑子搜索

"undefined method `description' for nil:NilClass" 

结果与下面的代码:

<ul>Test Search: 
    <% @optsolr.each do |c| %> 
     <li> 
    <%= c.description %> 
     </li> 
<% end %> 
</ul> 

当我只能叫 “C”,而不是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>]" 

我的控制器,其中我通过一组搜索参数循环搜索特定类别:

从轨调试

结果: --- - !!空 - !!空 - - 红宝石/对象:Nmodel 属性: ID:44 名称:!空 价格:!! null 有效期至:2012-02-22 类别:! '生活' 描述:我的描述文本 USER_ID:3 created_at:2012-02-22 04:20:48.048506000Z 的updated_at:2012-02-22 04:20:48.048506000Z 数量:!!空

+0

尝试使用Rails.logger来查看C的输出或使用Ruby Debug。 – ericraio 2012-02-23 05:12:16

回答

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

一种可能性......太阳黑子搜索正在为数据库中不再存在的对象返回一个ID。如果你已经建立了一个对象的索引,然后从数据库中删除了这行(也许通过删除数据库?),而不从Solr中删除它,这可能发生,特别是在开发中。

+0

感谢您的回复。我检查了开发数据库...行确实存在。为了好的措施,我还重新编制了太阳黑子...没有变化 – rehcelf 2012-02-23 05:19:12

+0

问题出在我的循环中创建的数组。谢谢你的帮助。 – rehcelf 2012-02-23 05:48:40