Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Rails 4使用javascript中的keyup进行实时搜索_Jquery_Ajax_Ruby On Rails 4_Search - Fatal编程技术网

Jquery Rails 4使用javascript中的keyup进行实时搜索

Jquery 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_

我有一个带有Ruby 2.2.2的Rails 4.2.1应用程序。我已经用Ransack实现了基本搜索,并且正在使用Ajax进行远程调用,以防止搜索时加载页面

我试图做的是使用jQuery
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)