Ruby on rails 在我的rails应用程序中实现searchkick和typeahead不起作用
我已经按照本教程尝试在我的应用程序中实现searchkick和typeahead.js,但不知何故它不能正常工作。typeahead根本不起作用,如果我键入整个名称“lito”,搜索也会起作用,但如果我只键入“li”,则不会返回用户。与本教程的一个明显区别是,我没有将typeahead捆绑包保存在vendor/assets中,因为该文件夹在我的rails应用程序中不存在,而是通过命令Ruby on rails 在我的rails应用程序中实现searchkick和typeahead不起作用,ruby-on-rails,Ruby On Rails,我已经按照本教程尝试在我的应用程序中实现searchkick和typeahead.js,但不知何故它不能正常工作。typeahead根本不起作用,如果我键入整个名称“lito”,搜索也会起作用,但如果我只键入“li”,则不会返回用户。与本教程的一个明显区别是,我没有将typeahead捆绑包保存在vendor/assets中,因为该文件夹在我的rails应用程序中不存在,而是通过命令warn add typeahead,然后在javascript/application.js中保存了:impor
warn add typeahead
,然后在javascript/application.js中保存了:import typeahead``
如果您需要代码的任何其他部分,请告诉我。提前感谢:)
您还需要指定在模型中使用word_start的字段
class User < ApplicationRecord
searchkick word_start: [:first_name, :last_name, :username]
end
class用户
然后重新编制索引 谢谢你看!我添加了它,但它不能解决问题。有几件事是不可能的。例如,如果我输入控制台搜索(“li”),我会得到三个结果,但在我看来,我只得到一个。这是回购协议,如果你想看看的话
class User < ApplicationRecord
searchkick
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :lists, dependent: :destroy
def search_data
{
username: username,
first_name: first_name,
last_name: last_name
}
end
end
$(document).on('turbolinks:load', function(){
var users = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/profiles/autocomplete?query=%QUERY',
wildcard: '%QUERY'
}
});
$('#users_search').typeahead(null, {
source: users
});
})
class User < ApplicationRecord
searchkick word_start: [:first_name, :last_name, :username]
end