簡體   English   中英

Rails會在同一頁面上抓住兩個對象,從搜索字段傳遞一個參數

[英]Rails will_paginate two objects on the same page, passing one param from search field

我在兩個實例變量的結果上使用了will_paginate,每個變量在兩個不同的PgSearch.multisearch方法上使用相同的param[:query] 在視圖中,當單擊其中一個分頁鏈接時,兩個表都在更新。 有沒有辦法解決這個問題? 從表單中只傳遞一個參數? (因為我的搜索表單只有一個文本字段)。 我搜索並經歷了類似的問題,其中大多數建議使用兩個參數。但是他們都沒有給我任何想法用一個參數來解決這個問題。 :/

代碼形式如下:

<%= form_tag("/search", :method => "get", :remote => true) do %>
  <%= label_tag(:query, "Search for: ") %>
  <%= text_field_tag(:query, params[:query]) %>
  <%= submit_tag("Search", class: "btn btn-primary") %>
<% end %>

控制器代碼:

def index
  @employee = Employee.find(session[:user_id])
  @search_employees = PgSearch.multisearch(params[:query]).where(:searchable_type => "Employee").paginate(page: params[:page], :per_page => 5)
  @search_customers = PgSearch.multisearch(params[:query]).where(:searchable_type => "Customer").paginate(page: params[:page], :per_page => 5)
  respond_to do |f|
    f.html
    f.js
  end
end

視圖中的代碼:

<% if !@search_employees.empty? %>
<h2>Employees</h2>
<table class="table table-hover">
.
.
<% @search_employees.each_with_index do |doc, index| %>
  <% user = doc.searchable %>
  <tr id="employee-<%= user.id %>">
  .
  .
<% end %>
  </tbody>
</table>
<% end %>
<%= will_paginate @search_employees %>

<% if !@search_customers.empty? %>
<h2>Customers</h2>
<table>
.
.
</table>
<% end %>
<%= will_paginate @search_customers %>

我可以從表單中發送兩個具有相同文本字段值的不同參數嗎? 如果是的話,請讓我知道如何。 任何想法或建議將不勝感激。 :)

提前致謝。 :)

分頁取決於page參數,但不取決於搜索表單中的query參數,因此您無需更改表單中的任何內容。

要僅更新相應的表,您需要在至少一個表中自定義page參數。 例如,為客戶更改頁面參數:

<%= will_paginate @search_customers, :param_name => 'customers_page' %>

在控制器中:

@search_customers = PgSearch.multisearch(params[:query])
  .where(:searchable_type => "Customer")
  .paginate(:page => params[:customers_page], :per_page => 5)

這應該解決問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM