2016-09-19 2 views
0

У меня есть скрытый 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

Сначала добавьте "удаленный: правда" себе чал в форму так, он представляет с помощью AJAX:

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

Добавьте DIV на ваш взгляд пользователя, где поиск выполняется с идентификатором результатов поиска:

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

Затем добавьте файл с именем " user_search.js.erb»внутри пользователей просматривать папку с помощью следующей строки:

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

Затем добавить файл с именем„_search_results.html.erb“в той же папке, вид поиска находится в (это ваш парциальное что будет показано при поиске. Удостоверьтесь, что у вас есть ведущий «_»). В этом файле добавить результаты таблицы:

<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 вы первоначально был.

+0

спасибо bkunzi01. Один вопрос относительно метода user_search. @results = WhateverModelQueryYouHave, я не знаю, какой синтаксис я должен заменить с помощью WhateverModelQueryYouHave. Я ищу модель под названием «пять», и этот фильтр поиска был настроен с использованием драгоценного камня ransack. – BlueDevilPride

+0

Эй, в основном вам просто нужно установить переменную экземпляра с вашими результатами, чтобы вы могли получить к ним доступ в своем представлении. Какими бы ни были результаты рендекса драгоценных камней, вы просто хотите передать его вашему представлению (обычно через переменную экземпляра, как показано установкой @results). – bkunzi01

+0

спасибо за помощь bkunzi01, но я просто не мог заставить это работать. Теперь, когда я нахожу поиск, он ничего не делает. Я вернусь и снова просмотрю и посмотрю, смогу ли я это понять. Ценю вашу помощь. – BlueDevilPride

Смежные вопросы