Jquery Rails 4使用javascript中的keyup进行实时搜索
我有一个带有Ruby 2.2.2的Rails 4.2.1应用程序。我已经用Ransack实现了基本搜索,并且正在使用Ajax进行远程调用,以防止搜索时加载页面 我试图做的是使用jQueryJquery Rails 4使用javascript中的keyup进行实时搜索,jquery,ajax,ruby-on-rails-4,search,Jquery,Ajax,Ruby On Rails 4,Search,我有一个带有Ruby 2.2.2的Rails 4.2.1应用程序。我已经用Ransack实现了基本搜索,并且正在使用Ajax进行远程调用,以防止搜索时加载页面 我试图做的是使用jQuerykeyup功能,这样当用户开始在搜索框中键入内容时,它将实时生成结果。下面是我的代码。我在application.JS中编写的jQuery/JS在Rails 3.2.x应用程序中运行良好(我之前从中提取了它),但在Rails 4.2.1中根本不起作用 application.js $("#inventory_
keyup
功能,这样当用户开始在搜索框中键入内容时,它将实时生成结果。下面是我的代码。我在application.JS中编写的jQuery/JS在Rails 3.2.x应用程序中运行良好(我之前从中提取了它),但在Rails 4.2.1中根本不起作用
application.js
$("#inventory_search input").keyup(function() {
$.get($("#inventory_search").attr("action"), $("#inventory_search").serialize(), null, "script");
return false;
});
});
index.js.erb
$("#search").html("<%= escape_javascript render("search") %>");
$("#results").html("<%= escape_javascript render("results") %>");
<div class="pull-right" style="margin-right: 25px">
<%= search_form_for(@q, url: "/inventory", method: :get, :id => "inventory_search", :remote => true) do |f| %>
<%= f.search_field :asset_number_or_asset_name_or_asset_serial_cont, placeholder: 'Search...', class: 'form-control' %>
<% end %>
</div>
<table class="table table-striped">
<thead>
<tr>
<th>Asset Number</th>
<th>Asset Name</th>
<th>Serial Number</th>
<th>Model</th>
<th>Manufacturer</th>
<th>Asset Type</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<% @assets.each do |a| %>
<tr>
<td><%= a.asset_number %></td>
<td><%= a.asset_name %></td>
<td><%= a.asset_serial %></td>
<td><%= a.asset_model %></td>
<td><%= a.asset_manuf %></td>
<td><%= a.asset_type.try(:name) %></td>
<td><%= link_to 'View', inventory_path(a), :class => 'btn btn-mini btn-info' %> <%= link_to 'Edit', edit_inventory_path(a), :class => 'btn btn-mini btn-warning' %></td>
</tr>
</tbody>
<% end %>
<%= will_paginate @assets %>
正如您所看到的,Ajax正在触发并捕获我的输入。在本例中,我输入了“di”,但没有显示结果,而且如果我清除字段,它不会返回所有默认范围的结果
在此方面的任何帮助或指导都将不胜感激。如果我的问题不清楚或者您需要进一步的信息,请询问 那么,会发生什么?有人提出要求吗?日志里有什么?JS控制台?“它不起作用”不是很有帮助。对此我很抱歉。我将在问题中输出一个示例Rails日志条目。当我开始输入ajax时,会触发,但不会显示结果。在JS控制台中,我也看不到任何错误,所以我非常确定我的语法是正确的。有趣的是,我写的这段代码在Rails3.2.x中运行得非常好,但在4.2.1中却不起作用。这可能是turbolinks的问题吗?@DaveNewton两年后,rails 5.1.3也遇到了同样的问题。它触发JS请求,但在我键入第一个字符后停止。我在函数中也使用了turbolinks加载,但没有乐趣。
Started GET "/inventory?utf8=%E2%9C%93&q%5Basset_number_or_asset_name_or_asset_serial_cont%5D=di&_=1434896540287" for 127.0.0.1 at 2015-06-21 09:22:22 -0500
Processing by InventoryController#index as JS
Parameters: {"utf8"=>"✓", "q"=>{"asset_number_or_asset_name_or_asset_serial_cont"=>"di"}, "_"=>"1434896540287"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Rendered inventory/_search.html.erb (1.5ms)
Asset Load (0.3ms) SELECT "assets".* FROM "assets" WHERE (("assets"."asset_number" ILIKE '%di%' OR "assets"."asset_name" ILIKE '%di%') OR "assets"."asset_serial" ILIKE '%di%') ORDER BY asset_number ASC LIMIT 10 OFFSET 0
Rendered inventory/_results.html.erb (1.1ms)
Rendered inventory/index.js.erb (22.8ms)
Completed 200 OK in 59ms (Views: 52.5ms | ActiveRecord: 3.2ms)