Searchkick, как отобразить значение объединенной таблицы для ключа корзины - PullRequest
0 голосов
/ 27 июня 2019

У меня есть таблица с именем projects, в которой есть несколько полей.Я присоединился к таблице project_status, чтобы получить информацию о состоянии.При выводе различных ключей сегмента я отображаю значение proj_status_id (1, 2, 3 и т. Д.). Я хочу отобразить поле statusdescr из объединенной таблицы вместо числового значения * 1005.*.

Есть мысли о том, как это сделать?Вот мой метод индекса контроллера проектов:

    args = {}
    args[:projtype] = params[:projtype] if params[:projtype].present?
    args[:proj_status_id] = params[:proj_status_id] if params[:proj_status_id].present?
    args[:created_at] = params[:created_at] if params[:created_at].present?
    @projects = Project.joins(:proj_status).order("created_at DESC").search "*", where: args, aggs: {projtype: {}, proj_status_id: {}, created_at: {}}

Здесь я отображаю информацию о корзине:

    <% @projects.aggs["proj_status_id"]["buckets"].each do |bucket| %>

    <span class="text-body d-flex justify-content-between align-items-center py-2 px-4">
      <% if params[:proj_status_id] == bucket["key"].to_s %>
        <div> <strong><%= link_to bucket["key"], request.params.merge(proj_status_id: bucket["key"]) %></strong> (<%= bucket["doc_count"]%>)</div>
      <% else %>
        <div><%= link_to bucket["key"], request.params.merge(proj_status_id: bucket["key"]) %> (<%= bucket["doc_count"]%>)</div>
      <% end %>
    </span>

    <% end %>

Любые мысли и предложения приветствуются.

1 Ответ

1 голос
/ 30 июня 2019

Вам также необходимо проиндексировать project_status.Добавьте приведенный ниже код к модели ваших проектов:

def search_data
  attributes.merge(
    project_status_statusdescr: self.project_status.try(:statusdescr)
  )
end

После добавления приведенного выше кода не забудьте переиндексировать.

...