Javascript 使用JS和Keyup在Rails 4中进行实时搜索

Javascript 使用JS和Keyup在Rails 4中进行实时搜索,javascript,ruby,ajax,ruby-on-rails-4,Javascript,Ruby,Ajax,Ruby On Rails 4,我有一个rails应用程序需要实时搜索(当用户键入时通过JS/Ajax显示结果)。这是我到目前为止写的代码 application.js $(function() { $("#email_search input").keyup(function() { $.get($("#email_search").attr("action"), $("#email_search").serialize(), null, "script"); return false; }); }); \

我有一个rails应用程序需要实时搜索(当用户键入时通过JS/Ajax显示结果)。这是我到目前为止写的代码

application.js

$(function() {
  $("#email_search input").keyup(function() {
  $.get($("#email_search").attr("action"), $("#email_search").serialize(), null, "script");
return false;
   });
 });
\u email.html.erb partial

<%= form_tag emails_path, :method => 'get', remote: true, :id => "email_search" do %>

  <%= text_field_tag :search,  params[:search], :placeholder => 'Search From, Subject, or Body, Hit Enter To Search', :class => 'form-control' %>

<% end %>
email.rb(搜索方法)

下面是发生的事情。我可以输入1-2个字母,它会调出结果,但之后就不会继续了,就像JS暂停一样。我禁用了setInterval计时器来轮询新消息,但它不工作。这确实令人沮丧,因为它在旧版本的Rails中工作,而不是在4.2.x系列中

这是turbolinks的问题吗?还是我需要以不同的方式编写JS?我也安装了jquery TurboLink,但这两种方式都没有什么不同


非常感谢您提供的任何帮助。

从这里的代码片段很难判断,但我遇到了一个类似的问题,我将表单放置在索引页的替换部分。因此,我的表单将接受几个字符,直到AJAX有时间处理,然后它将用部分字符替换结果(包括我的表单)。它会“暂停”。将我的表格移到可替换区域之外修复了它


那可能只是我愚蠢的错误;而且很容易修复。但是我想我应该提到它。

这里很难从片段中分辨出来,但是我遇到了一个类似的问题,我在索引页的替换部分中定位了我的表单。因此,我的表单将接受几个字符,直到AJAX有时间处理,然后它将用部分字符替换结果(包括我的表单)。它会“暂停”。将我的表格移到可替换区域之外修复了它


那可能只是我愚蠢的错误;而且很容易修复。但我想我应该提一下。

我很高兴找到了我的旧帖子,我在Rails 5.1.3应用程序中遇到了类似的问题,并通过消除搜索表单的JS负载来解决了这个问题,该表单正在重新呈现,因此失去了焦点。我很高兴找到了我的旧帖子,我在Rails 5.1.3应用程序中遇到了一个类似的问题,并通过终止搜索表单的JS加载来解决了这个问题,该表单正在重新呈现,因此失去了焦点
<div id="emails">
  <%= render "emails" %>
</div>

<script>
  $(function() {
    setInterval(function(){
      $.getScript("/emails")
    }, 30000);
  });
</script>
$("#emails").html("<%= escape_javascript render("emails") %>");
  respond_to :html, :js
  def index
    @emails = current_user.emails.search(params[:search]).order("created_at DESC")
  end
def self.search(search)
    if search
      where('from_email ILIKE ? OR subject ILIKE ? OR body ILIKE ?', "%#{search}%", "%#{search}%", "%#{search}%")
    else
      all
    end
  end