Searchkick突出显示:未定义的方法`with_details' for []:Array

时间:2016-09-12 14:12:06

标签: ruby-on-rails ruby-on-rails-4 elasticsearch searchkick

我正在尝试使用SearchKick将摘录突出显示到我的应用中,但是Rails一直告诉我我的对象类型错误。

我的控制器:

def search

  @articles = Article.text_search(params[:q])
  ...

我的观点:

- articles.with_details.each do |article, details|
  ...
  p.mb-15.excerpt
    = details[:highlight][:content]

我的模特:

searchkick highlight: [:content]

def self.text_search(query)
  if query.present?
    search(
           query,
           fields:
              [
               "title^10",
               "h1^5",
               "meta_description",
               "content"
              ],
           limit: 5,
           highlight: {
           fields: {content:
               {fragment_size: 100}
             }
           }
       )
  else
    []
  end
end

1 个答案:

答案 0 :(得分:0)

我猜你从模型中的其他分支获得[]作为text_search结果:

else
  []
end

所以也许你可以在你的视图和控制器中做这样的事情来逃避这样的错误:

<强>控制器:

articles = Article.text_search(params[:q])
@detailed_articles = articles.empty? ? [] : articles.with_details

查看:

- @detailed_articles.each do |article, details|
  ...
  p.mb-15.excerpt
    = details[:highlight][:content]