Searchkick - Автозаполнение с несколькими моделями и полями
Я изо всех сил пытаюсь реализовать функцию автозаполнения для нескольких моделей, связанных с моей моделью Post
. Функция поиска работает нормально и возвращает ожидаемые данные. Мой метод автозаполнения также отлично работает, если я реализую его так, как это сделано в документации (однако только для заголовка сообщений).
Я также пробовал этот ответ и этот один путем переключения Post.index.name
на Post.searchkick_index.name
, но функция автозаполнения не отображается.
Это код, который я написал в posts_controller.rb
:
def autocomplete
render json: Post.search(params[:query],
index_name: [
Post.searchkick_index.name,
Tag.searchkick_index.name,
User.searchkick_index.name
],
limit: 10,
load: false,
misspellings: { below: 5 })
end
Я также пробовал:
def autocomplete
render json: Searchkick.search(params[:query],
models: [Post, Tag, User],
limit: 10,
load: false,
misspellings: { below: 5 })
end
Я не получаю ошибок с приведенным выше кодом, но функция автозаполнения также не работает.
В post.rb
:
class Post < ApplicationRecord
belongs_to :user
has_many :comments, dependent: :destroy
has_many :posts_tags, dependent: :destroy
has_many :tags, through: :posts_tags
searchkick word_start: %i[title]
def search_data
{
title: title,
description: description,
user: user.full_name
}.merge(
tag: tags.map(&:title),
comments: comments.map(&:description)
)
end
end
Как было предложено в разделе ответов, я также пробовал следующее:
def autocomplete
posts = Post.search(params[:query], execute: false)
tags = Tag.search(params[:query], execute: false)
users = User.search(params[:query], execute: false)
render json: Searchkick.multi_search([posts, tags, users])
end
Это возвращает следующую ошибку: fatal - exception reentered
.
Я хочу иметь возможность автозаполнения сообщения title , тега title и пользователя full_name . Как мне изменить свой код?
Заранее спасибо!