删除隐藏表并发布新的搜索结果内容

时间:2016-09-19 19:10:44

标签: jquery ruby-on-rails

我有一个隐藏的div,我可以在用户从我的postgres数据库运行搜索后显示。但是,我遇到的问题是,div会显示第一个搜索结果,并且不会对后续搜索进行更新。它只修复了第一个搜索结果。我需要添加什么jquery代码,以便搜索结果反映新的搜索?我希望这看起来像传统的搜索引擎一样,一开始就是空白,但不断更新新的搜索条目。另外,当我删除`return false;'它只是将结果闪烁一秒钟,但不会将它们保留在页面上。

HTML搜索

<%=search_form_for @search, url: user_path(current_user) do |f| %>
 <div class="actions" id="search"><%= f.submit "Search" %></div>

Jquery的

$(document).ready(function(){
        $('#search').on('click', function(event) {        
             $('#results').removeAttr("style")
             return false;
        });
    });

HTML DIV

<div id='results' style="display: none;">
<table>
  <tr>
     <th><%= sort_link @search, :Plan_Name, "Plan Name" %></th>
     <th><%= sort_link @search, :Filing_Method, "Filing Method" %></th>
     <th><%= sort_link @search, :Participants, "Participants" %></th>
     <th><%= sort_link @search, :Filing_Type, "Filing Type" %></th>
</tr>
</div>

1 个答案:

答案 0 :(得分:0)

首先添加&#34; remote:true&#34;设置为您的表单,以便通过ajax提交:

<%=search_form_for @search, url: user_path(current_user), remote: true do |f| %>
 <div class="actions" id="search"><%= f.submit "Search" %></div>

在您的用户视图中添加div,其中使用搜索结果ID执行搜索:

<div id='search-results'></div> <!-- This will be the div where your table of results is appended -->

然后,添加名为&#34; user_search.js.erb&#34;的文件。在用户视图文件夹中,使用以下行:

$("#search-results").html("<%=escape_javascript(render 'search_results')%>").hide().fadeIn(900);

然后添加名为&#39; _search_results.html.erb&#39;的文件。搜索所在的同一个视图文件夹(这是您在搜索时显示的部分文件夹。确保保持领先&#39; _&#39;)。在该文件中添加结果表:

<div id='results' style="display: none;">
<table>
  <tr>
     <th><%= sort_link @search, :Plan_Name, "Plan Name" %></th>
     <th><%= sort_link @search, :Filing_Method, "Filing Method" %></th>
     <th><%= sort_link @search, :Participants, "Participants" %></th>
     <th><%= sort_link @search, :Filing_Type, "Filing Type" %></th>
</tr>
</div>

然后添加到您的路线文件:

get 'user_search', to: users#user_search, as: 'user_search'

然后在您的用户控制器中添加:

def user_search
  @results = WhateverModelQueryYouHave
  respond_to do |format|
     format.html {}
     format.js { } #This is basically saying call for user_search.js.erb 
  end
end

您也可以删除原来的jquery。