[英]rails autocomplete searchkick
我正在尝试使用typeahead.js自动完成
这就是我目前所拥有的。
这是在我的控制器中。
def autocomplete
render json: Event.search(params[:query], autocomplete: true, limit: 10).map(&:eventname)
end
这是我的路线
resources :events do
collection do
get :autocomplete
end
end
如果我使用Rails控制台并执行此操作
Event.search("searchquery", autocomplete: true).map(&:eventname)
我确实得到了预期的答复,
然而
如果我在网站上使用普通的搜索框进行搜索,则会出现此错误
ActiveRecord::RecordNotFound (Couldn't find Event with 'id'=autocomplete):
app/controllers/events_controller.rb:50:in `show'
在节目的第50行(在其他地方使用)是这个
@event = Event.find(params[:id])
这是我的看法
<div class="col-md-12" align="center" style="padding-top: 1%">
<%= javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.9.3/ typeahead.min.js" %>
<h1><%= image_tag("Logo.png", :class => "logo", :style => "background-color: rgba(0, 0, 0, 0.8); border-radius: 50px") %></h1>
<%= form_tag search_events_path, class: "form-inline form-wrapper", method: :get do %>
<%= text_field_tag :search, params[:search], placeholder: "What are you looking for?", class: "search-module-input-text", id: "search", autocomplete: "off" %>
<%= submit_tag "Search", id: "submit" %>
</div>
我试图按照本教程
我只能像上面看到的那样添加搜索代码
任何帮助都很好!!!
山姆
编辑
这是控制器的显示部分和搜索部分
def search
@events = Event.search params[:search], suggest: true, partial: true, misspellings: {distance: 4}
if @events.results.any?
render 'events/results'
else
render 'events/noresults'
end
end
def show
@event = Event.find(params[:id])
@stubby = stub_auth_token
end
滑轨控制台
curl http://localhost:9200/events_development/_search?pretty -d '{"query":{"multi_match":{"fields":["eventname.autocomplete"],"query":"response","analyzer":"searchkick_autocomplete_search"}},"size":1000,"from":0,"fields":[]}'
Event Load (3.5ms) SELECT "events".* FROM "events" WHERE "events"."id" IN (23419, 23420, 16330, 16329, 13660)
=> ["reponse1", "reponse2", "reponse3", "reponse4", "reponse5"]
你可以试试这个吗?
<%= form_tag autocomplete_events_path, ... %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.