undefined方法错误rails 3太阳黑子搜索

时间:2012-02-23 05:03:30

标签: ruby-on-rails sunspot

我无法弄清楚如何解决这个问题!请帮忙!!

"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

2 个答案:

答案 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中删除它。