2014-10-23 5 views
0

Я ищу две модели с Solr, как так:Группа Solr результаты по классам

@query = Sunspot.search Location, Employee do 
    with(:category_id, params[:category_id]) if params[:category_id].present? 
    fulltext params[:search] 
    facet :category_id 
    order_by(:weight, :desc) 
    paginate :page => params[:page], :per_page => 10 
end 

Я хотел бы создать два отдельных объектов из результатов, содержащий результаты от обеих моделей, так что я могу разделить их в пользовательский интерфейс.

Я сейчас делаю:

@results = @query.results.group_by(&:class) 
@locations = @results[Location] 
@employees = @results[Employee] 

, но это не работает. @locations и @employees оба пустые. Что мне здесь не хватает? Если я отлаживаю @results, я вижу совпадения, и они уже сгруппированы по модели. Я просто хочу показать это в своем представлении, чтобы я мог разделить результаты на скрытые/отображаемые контейнеры. Мысли?

ответ

1

У меня нет solr, поэтому я не могу предположить, как выглядят @results (я предполагаю, что это хэш).

С учетом этого хеш-ключи являются символами или строками.

Так что попробуйте

@locations = @results[:Location] 
@employees = @results[:Employee] 

или

@locations = @results["Location"] 
@employees = @results["Employee"] 

Один из двух из них (вероятно, первым) должен дать вам информацию по каждой переменной экземпляра. Причина в том, что ruby ​​установит хэш-ключи имен классов в качестве символов. Если имена уже были строками, ключи будут строками.

Смежные вопросы