javascript - 使用 typeahead.js 创建可点击的动态链接

标签 javascript jquery ruby-on-rails search typeahead.js

我想让我的搜索自动完成中的建议结果链接到网站上的特定餐厅。

注意:我遇到了这个 post但它使用静态对象数组。与这篇文章不同的是,我希望从服务器端生成链接。

var links = [{name: "abc", link: "http://www.example1.com"}, 
             {name: "nbc", link: "http://www.example2.com"}];

var source = new Bloodhound({
  ...
  local: links
});

就我而言,我正在从 Rails 查询数据库,因此 name将是餐厅的名称和 link将是 restaurant_path 。根据我当前的代码,我该如何实现这一目标?如果需要任何其他代码,请告诉我。

$(function() {
  var restaurants = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: { 
      url: "/search/autocomplete?query=%QUERY",
      wildcard: "%QUERY"
    }
  });

  restaurants.initialize();

  $('#autocomplete').typeahead(null, {
    displayKey: 'name',
    source: restaurants.ttAdapter()
  });
});

我的餐厅路径目前的样子如下:

localhost:3000/restaurants/blue-smoke

更新:

根据 guest271314 的建议,我能够找到我的餐厅对象的返回值,其中包括适当的段(即 blue-smoke )来链接建议的结果。

最佳答案

尝试使用第二个.typeahead()初始化对象的templatessuggesstion选项。请参阅Typeahead examples - Custom Templates

$('#autocomplete').typeahead(null, {
    displayKey: 'name',
    source: restaurants.ttAdapter(),
    templates:{
      suggestion:function(data) {
        return "<a href=" + data.slug + ">"+ data.name +"</a>"
      }
    }
  });

关于javascript - 使用 typeahead.js 创建可点击的动态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33674324/

相关文章:

java - Struts2 表单经过逐步增强,无需 AJAX 即可工作

javascript - 突出显示事件(打开)链接

javascript - 键码 13 和键码 10 不工作

jquery - 根据弹出窗口相对于窗口边缘的 X 位置更改 Bootstrap 弹出窗口的位置?

ruby-on-rails - 错误 : current transaction is aborted, 命令被忽略,直到事务 block 结束,Ruby on Rails

ruby-on-rails - RSpec 与 Cookies - 即使应用程序正常运行,测试也会失败(模拟登录用户)

javascript - jQuery Draggable 的行为不符合预期

javascript - 当回调触发手动表单提交时,不会调用 jQuery 表单提交处理程序

Jquery 在滚动位置更改 css

php - 在 Rails 中运行 PHP 的最佳方式是什么?