我有一个使用 pg_search gem 的搜索表单。我基本上是从 Railscast #343 改编而来的。
但是,无论我尝试什么,它总是会在搜索时重新加载页面。
我尝试在表单中添加 :remote => true 并使用 format.js 在控制器中放入一个 respond_to 块。我还尝试在仅返回 js 但我的页面始终使用 url 中的参数重新加载的路由中创建单独的“/search”路径。
这是相关的代码位:
形式:
<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,不知道是什么阻碍了我:( 谢谢!