Я пытаюсь создать простую форму поиска, которая отвечает на AJAX на моем приложении Rails 4.2. Я попытался найти каждый учебник, который я смог найти, но все равно безуспешно.Как добавить живой поиск в Rails 4.2?
- http://railscasts.com/episodes/240-search-sort-paginate-with-ajax
- http://aymeric.gaurat.net/2010/how-to-develop-live-search-textbox-in-ruby-on-rails/
- Ruby on Rails Live Search (Filtering),
- https://www.youtube.com/watch?v=EqzwLUni2PM)
Это мой способ поиска:
def self.search(search)
search ? where('name LIKE ?', "%#{search}%") : all
end
Мой индекс действия на контроллере:
# GET /ticket_types
# GET /ticket_types.json
def index
@ticket_types = TicketType.search(params[:search]).order(sort_column + " " + sort_direction).paginate(per_page: 10, page: params[:page])
respond_to do |format|
format.html {render 'index'}
format.json {render json: @ticket_types.map(&:name)}
end
end
Мой фильтр:
<form>
<fieldset>
<legend>Filter</legend>
<%= form_tag path, remote: true, method: 'get', id: id do %>
<%= hidden_field_tag :direction, params[:direction] %>
<%= hidden_field_tag :sort, params[:sort]%>
<p>
<%= text_field_tag :search, params[:search], id: 'filter_search_autocomplete', data: {autocomplete_source: ticket_types_path} %>
<%= render 'button_submit', name: nil, id:"search_button" %>
</p>
<% end %>
</fieldset>
</form>
Кнопку Submit:
<%= submit_tag "Search", name: name, class: 'button', id: id, remote: true %>
Мой ticket_types.coff и ее
jQuery ->
$('#filter_search_autocomplete').autocomplete
source: $('#filter_search_autocomplete').data('autocomplete-source')
И мой индекс парциального:
<p id="notice"><%= notice %></p>
<%= render 'registry_filter', path: ticket_types_path, id: "ticket_search_filter" %>
<%= render 'ticket_types' %>
<br>
<section id="content-area"></section>
<div>
<%= render 'button_link', button_name: "Create", path: new_ticket_type_path, id: 'create' %>
<%= render 'button_link', button_name: "Back", path: ticket_types_path, id: 'back_button' %>
</div>
Любые идеи о том, как я мог бы иметь коробку livesearch как Facebook? Например, я хотел бы, чтобы каждый раз, когда пользователь вводил письмо в поле, он показывал около 5 результатов реестров, содержащих данное слово, а затем использовал этот ресурс поиска как частичный, чтобы иметь возможность использовать на других моделях приложение. Заранее спасибо!
Ну, прежде всего, я бы рекомендовал использовать какой-то бэкэнд, такой как ElasticSearch, если вы знаете об ElasticSearch, тогда дайте мне знать, я напишу вам ответ. – SsouLlesS