RAILS 6 - как использовать EasyAutocomplete - PullRequest
0 голосов
/ 17 апреля 2020

Последние часы я пытаюсь интегрировать EasyAutocomplete в RAILS 6. Но не все так просто.

Что я сделал:

Установка Javascript Пакет с пряжей:

# yarn add easy-autocomplete

Добавьте это в файл app / javascript / packs / application. js

import “easy-autocomplete”

Добавьте это в файл app / assets / stylesheets / application. css

*= require easy-autocomplete
*= require easy-autocomplete.themes

Затем запустите сервер Rails и обновите sh веб-страницу. Тогда попытайтесь использовать это. Go в консоли разработчика и введите:

var options = {
data: ["otto", "hans", "paula"] 
};

$("#task_name_search_field").easyAutocomplete(options);

имя_задачи_поиска_поле ранее было определено как id:

<input type="search" class="form-control" id="task_name_search_field">

Я получил это сообщение: TypeError: $ (...). EasyAutocomplete это не функция

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

У меня была такая же проблема. Turbolinks не дает доступа к скрипту, код должен быть запущен после его загрузки, что-то вроде этого:

document.addEventListener("turbolinks:load", function() {
  var options = {
   data: ["otto", "hans", "paula"] 
  };

  $("#task_name_search_field").easyAutocomplete(options);
});

Чтобы автозаполнение работало, вам нужно добавить файл скрипта в приложение. js вот так:

require("packs/youfile")

Если вам это поможет, вот пример моего кода:

document.addEventListener("turbolinks:load", function() {
 $input = $("[data-behavior='autocomplete']")

 var options = {
  getValue: "full_name",
  url: function(phrase) {
  return "/search.json?q=" + phrase;
 },
categories: [
  {
    listLocation: "cameras",
    header: "<strong>Cameras</strong>",
  }
],
list: {
  onChooseEvent: function() {
    var url = $input.getSelectedItemData().url
    $input.val("")
    Turbolinks.visit(url)
  }
 }
}
$input.easyAutocomplete(options)});
0 голосов
/ 17 апреля 2020

Полагаю, вы бы не включили jquery в свой application.js. Вы должны сделать это явно, поскольку он не включается автоматически в приложение rails 6.

...