0

我似乎无法弄清楚为什么会出现以下错误:

can't convert Array into Hash

这是应用程序跟踪:

app/models/channel.rb:21:in `search'
app/controllers/posts_controller.rb:107:in `browse'

以下代码来自 channel.rb(在应用程序跟踪中引用),其中第 21 行是“tire.search...”:

def self.search(params)
  tire.search(['posts_index', 'channels_index'],{load: true}) do
    query { string params[:query], default_operator: "AND" } if params[:query].present? 
    sort { by :created_at, "desc" } if params[:query].blank?
  end
end

我还包含了 posts_controller.rb 的浏览操作,上面的跟踪也引用了该操作:

def browse
    @user = current_user
    @channels = Channel.search(params)
    @posts = Post.search(params)
end

我的目标是使用轮胎/弹性搜索搜索多个索引。任何帮助,将不胜感激!

4

2 回答 2

0

嘿,尝试添加“ load: true ”而不给出花括号。它对我有用...

def self.search(params)
  tire.search(['posts_index', 'channels_index'],load: true) do
    query { string params[:query], default_operator: "AND" } if params[:query].present? 
    sort { by :created_at, "desc" } if params[:query].blank?
  end
end
于 2013-09-24T06:05:12.297 回答
0

我最终对这个问题的措辞有所不同——并且能够解决它。请参阅:使用 Tire 和 ElasticSearch 搜索多个模型

于 2013-09-24T16:38:55.097 回答