Я пытаюсь добавить опцию «Все результаты» в выпадающий поиск.Я ограничил свой поиск 5 записями:
# search_controller.rb
def search
@catalogs = Catalog.ransack(name_cont: params[:q]).result(distinct: true)
@products = Product.ransack(name_cont: params[:q]).result(distinct: true)
respond_to do |format|
format.html {}
format.json {
@catalogs = @catalogs.limit(5)
@products = @products.limit(5)
}
end
end
И теперь я хочу добавить дополнительную опцию, если есть более 5 результатов (неважно, каталоги это или продукты, просто дополнительная опция поверх всехРезультаты).Вот моя easy-autocomplete
настройка:
document.addEventListener("DOMContentLoaded", function() {
$input = $("[data-behavior='autocomplete']");
var options = {
getValue: "name",
url: function(phrase) {
return "/search.json?q=" + phrase;
},
categories: [
{ listLocation: "catalogs", header: "<strong>Catalogs</strong>" },
{ listLocation: "products", header: "<strong>Products</strong>" }
],
list: {
onChooseEvent: function() {
var url = $input.getSelectedItemData().url;
console.log(url);
$input.val("");
window.location.href = url;
}
}
};
$input.easyAutocomplete(options);
});
Я пытался гуглить, потому что это кажется очень очевидным, но я ничего не нашел.Прочитайте всю документацию easy-autocomplete
, но проблема все еще остается.Спасибо за вашу помощь и время!
ОБНОВЛЕНИЕ
Прочитайте easy-autocomplete
документацию еще раз и обнаружите onLoadEvent
в Events
.Упрощенное решение:
document.addEventListener("DOMContentLoaded", function() {
// code ...
onLoadEvent: function() {
$('.easy-autocomplete-container ul').append("<li>Show all</li>");
}
// code ...
};
$input.easyAutocomplete(options);
});