我有一个隐藏的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>
答案 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。