[英]Trigger AJAX on search (pg_search gem)
我有一个使用pg_search gem的搜索表单。 我基本上从Railscast#343改编了它。
但是,无论我尝试什么,它总是重新加载搜索页面。
我尝试在表单中添加:remote => true,并使用format.js放入控制器中的respond_to块。 我还尝试在仅返回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,不知道是什么让我抱在这里:(谢谢!
:remote => true选项在这里没有帮助,它实际上根本不是很有用,但这将是一个单独的主题。
通常你可以通过以下方式处理:
我最近遇到了类似的问题,不得不从头开始编写AJAX API调用,而不是使用remote => true:
jQuery(function() {
$('form').submit(function(e) {
var getData = $(this).serialize(); //grabs data from form input
var formURL = $(this).attr('action');
$.ajax({
url: formURL,
type: 'GET',
data: getData,
success: function(data, textStatus, jqXHR){
$('search_controls').append(data); //this is the JS that gets triggered in response to a successful return. Data is what was returned.
},
error: function(jqXHR, textStatus, errorThrown){}
});
e.preventDefault();
});
});
$(document).submit();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.