【问题标题】:undefined method error rails 3 sunspot search未定义的方法错误 rails 3 太阳黑子搜索
【发布时间】:2012-02-23 05:03:29
【问题描述】:

我不知道如何解决这个问题!!!请帮忙!!

"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>]"

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

              @search = Nmodel.search do
                  fulltext o.category do
                    query_phrase_slop 16
                 end
              end
              @optsolr[count[ = @search.results

rails 调试的结果: --- - !!无效的 - !!无效的 - - !ruby/object:Nmodel 属性: 编号:44 名称:!!空 价格:!!null 有效期:2012-02-22 类别: ! '生活 ' 描述:我的描述文本 用户 ID:3 created_at: 2012-02-22 04:20:48.048506000Z 更新时间:2012-02-22 04:20:48.048506000Z 数量:!!null

【问题讨论】:

  • 尝试使用 Rails.logger 查看 C 的输出是什么或使用 Ruby Debug。

标签: ruby-on-rails sunspot


【解决方案1】:

我猜从这个Results from rails debug: --- - &lt;&lt;&lt;&lt;!!null &gt;&gt;&gt;&gt;&gt;- &lt;&lt;&lt;&lt;!!null&gt;&gt;&gt;&gt;&gt; - - &lt;&lt;&lt;&lt;!ruby/object:Nmodel attributes: id: 44.. 它返回两条空记录和一条有效记录。

试试这个。

   <ul>Test Search:       
        <% @optsolr.delete_if{|ele| ele.blank?}.each do |c| %>
          <li>
        <%= c.description %>
          </li>
    <% end %>
    </ul>

【讨论】:

    【解决方案2】:

    一种可能性...太阳黑子搜索正在返回数据库中不再存在的对象的 ID。这可能会发生,尤其是在开发过程中,如果您已索引一个对象,然后从数据库中删除了该行(可能通过删除 db?)而不从 Solr 中删除它。

    【讨论】:

    • 感谢您的回复。我检查了开发数据库...该行确实存在。为了更好的衡量,我还重新索引了太阳黑子……没有变化
    • 问题在于在我的循环中创建的数组。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    相关资源
    最近更新 更多