【发布时间】:2016-05-06 03:08:59
【问题描述】:
我正在尝试使用 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"]
【问题讨论】:
-
显示
events_controller的show方法 -
现在添加 Rails 控制台日志,当您点击此请求时看到的内容。
-
@ArupRakshit 我会添加它,但出于某种原因必须对其进行编辑
-
您的路由是否正确?它根本不应该点击#show吗?检查 rake 路线?
-
@ArupRakshit 添加了编辑,rake 路由确实显示了这个
autocomplete_events GET /events/autocomplete(.:format) events#autocomplete
标签: ruby-on-rails search autocomplete