首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RAILS 6-如何使用EasyAutocomplete

RAILS 6-如何使用EasyAutocomplete
EN

Stack Overflow用户
提问于 2020-04-17 21:44:37
回答 4查看 1.3K关注 0票数 3

我在最后几个小时尝试将EasyAutocomplete集成到Rails6中,但并不是那么容易。

我做了什么:

使用yarn安装Javascript包:

代码语言:javascript
复制
# yarn add easy-autocomplete

将其添加到文件app/javascript/packs/application.js中

代码语言:javascript
复制
import “easy-autocomplete”

将其添加到文件app/assets/stylesheets/application.css中

代码语言:javascript
复制
*= require easy-autocomplete
*= require easy-autocomplete.themes

然后启动Rails Server并刷新Web页面。然后试着使用它。进入开发者控制台,输入:

代码语言:javascript
复制
var options = {
data: ["otto", "hans", "paula"] 
};

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

task_name_search_field之前被定义为id:

代码语言:javascript
复制
<input type="search" class="form-control" id="task_name_search_field">

我收到了这样的消息: TypeError:$(...).EasyAutocomplete不是一个函数

有什么想法吗?

EN

回答 4

Stack Overflow用户

发布于 2020-05-03 01:56:07

我也有同样的问题。Turbolinks不提供访问脚本的权限,代码需要在加载后运行,如下所示:

代码语言:javascript
复制
document.addEventListener("turbolinks:load", function() {
  var options = {
   data: ["otto", "hans", "paula"] 
  };

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

为了让自动完成功能正常工作,您需要向application.js中添加一个脚本文件,如下所示:

代码语言:javascript
复制
require("packs/youfile")

如果对你有帮助,下面是我的代码示例:

代码语言:javascript
复制
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)});
票数 1
EN

Stack Overflow用户

发布于 2020-04-17 22:43:23

我想您不会在application.js中包含jquery。你需要明确地这样做,因为它不会自动包含在rails 6应用程序中。

票数 0
EN

Stack Overflow用户

发布于 2020-06-08 12:40:36

我遇到了类似的问题。我是Webpacker的n00b,但在默认情况下,它似乎不会以包含插件的相同顺序进行编译。

为了解决这个问题,我做了这个变通方法,它只是将插件代码包装在一个匿名jQuery函数中,如下所示:

代码语言:javascript
复制
(function($) {

//Eac plugin code

})(jQuery);

https://github.com/pawelczak/EasyAutocomplete/issues/200#issuecomment-212277620

也许在配置中有一种方法可以强制按照正确的顺序进行编译。这看起来很有前途的https://stackoverflow.com/a/43005332/148390

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61273132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档