我的應用程序中有兩個主要模型,「商業」和「類別」。我目前有一個搜索text_field,工作得很好,但我也試圖實現用戶根據包含可用類別的collection_select搜索「belongs_to」某個類別的企業的功能。如何使用collection_select搜索使用searchkick gem的belongs_to?
我有collection_select工作,但我似乎無法弄清楚如何讓它顯示'belongs_to'所選類別的企業。
這裏是我的業務總監搜索信息:
def search
if params[:search].present?
@businesses = Business.search(params[:search])
else
@businesses = Business.all.paginate(page: params[:page], per_page: 6)
end
end
我的搜索形式:
<%= form_tag search_businesses_path, method: :get, role: "search", :class => "search" do %>
<%= label :category, "Search By Business Name" %>
<%= text_field_tag :search, params[:search], id: "search", :placeholder => 'Search Business' %>
<%= button_tag(type: 'submit', class: "button") do %>
<i class="fa fa-arrow-right"></i>
<% end %>
<% end %>
而且我現在的類別集合中選擇:
<%= form_for :category do |f| %>
<%= f.label :category, "Search By Category" %><br>
<%= f.collection_select :category_id, Category.all.order('name ASC'), :id, :name %>
<%= button_tag(type: 'submit', class: "button") do %>
<i class="fa fa-arrow-right"></i>
<% end %>
<% end %>
我知道我需要告訴收集選擇它需要顯示的業務,但我似乎無法弄清楚如何支持妥善執行它。
UPDATE
我嘗試下面的代碼,並沒有結果顯示:
我的商業模式
def search_data
{
name: name,
category_id: category_id
}
end
我的業務總監
def search
if params[:search].present?
@businesses = Business.search "apples", where: { category_id: params[:category_id] }
else
@businesses = Business.all.paginate(page: params[:page], per_page: 6)
end
end
我的形式
<%= form_tag search_businesses_path, method: :get, role: "search", :class => "search" do %>
<%= label :category, "Search By Category" %>
<%= collection_select :search, params[:category_id], Category.all.order('name ASC'), :id, :name %>
<%= button_tag(type: 'submit', class: "button") do %>
<i class="fa fa-arrow-right"></i>
<% end %>
<% end %>
你檢查過「params」嗎? 'params [:category_id]'存在嗎?或者它進入'params [:search]'?只需檢查併發布你收到的'params'。 – Deep
所以你說改變參數爲 '<%= collection_select:search,params [:search],Category.all.order('name ASC'),:id,:name%>' 這不顯示任何結果無論是。 – ZMoodie
玩過之後,我大多能夠做出正確的業務,但其中一些類別在頂部顯示了正確的業務,然後列出了其他幾個業務。我能做到這一點的唯一方法就是保持「商業」。搜索(params [:搜索])'的方式,並像這樣顯示我的表單'<%= collection_select:search,params [:category_id],Category.all.order('name ASC'),:id,:name %>'否則什麼都不會顯示出來。 – ZMoodie