У меня есть форма поиска, которая хорошо работает с гемом pg_search. Я в основном адаптировал его из Railscast #343.
Однако он всегда перезагружает страницу при поиске, что бы я ни пытался.
Я попытался добавить :remote => true в форму и поместить блок response_to в контроллер с помощью format.js. Я также попытался создать отдельный путь «/search» в маршрутах, которые возвращают только js, но моя страница всегда перезагружается с параметрами в URL-адресе.
Вот соответствующие фрагменты кода:
Форма:
<div id="search_controls">
<form class="form-inline">
<div class="form-group">
<%= form_tag discover_path, :method => 'get', id: "tapes_search" do %>
<%= text_field_tag :query, params[:query], :autocomplete => :off, id: 'search_field', class: "form-control" %>
<%= submit_tag "Search", :name => nil, id: 'search_submit', class: 'btn btn-default' %>
<% end %>
</div>
</form>
</div>
</div>
Контроллер:
def index
if params[:query]
@tapes = Tape.search(params[:query]).order("release_date DESC", :id).paginate(:page => params[:page], :per_page => 15)
else
@tapes = Tape.order("release_date DESC", :id).paginate(:page => params[:page], :per_page => 15)
end
end
Модальный:
include PgSearch
pg_search_scope :search, against: [:album_name, :artist_name],
using: {tsearch: {dictionary: "english"}},
ignoring: :accents
def self.text_search(query)
search(query)
end
Маршрут
match '/discover', to: 'tapes#index', via: 'get'
Это, очевидно, без какой-либо функциональности ajax. Не мог бы кто-нибудь показать мне, что мне нужно сделать, чтобы параметры были отправлены незаметно, без перезагрузки страницы и срабатывания js в ответ?
Я использовал ajax на всем своем сайте, не знаю, что меня здесь держит :( Спасибо!