私のアプリには2つのメインモデル「ビジネス」と「カテゴリ」があります。私は現在、うまく動作する検索のtext_fieldを持っていますが、利用可能なカテゴリを含むcollection_selectに基づいて特定のカテゴリに属しているビジネスを検索する機能も実装しようとしています。collection_selectを使用してbelongs_toをsearchkick gemで検索するにはどうすればよいですか?
私はcollection_selectを使用していますが、選択したカテゴリに属しているビジネスを表示する方法を見つけることができません。ここで
は私のビジネスのコントローラ内の検索情報である:
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
私は周りを遊んだ後、私はほとんどの場合、正しいビジネスを表示することができましたが、いくつかのカテゴリは正しいビジネスをトップに示し、その下にいくつかの他のビジネスをリストしています。私がこれを実現させる唯一の方法は 'ビジネスを維持することです。<%= collection_select:search、params [:category_id]、Category.all.order( 'name ASC')、:id、:nameを検索する(params [:search]) ' %> 'そうでなければ何も表示されません。 – ZMoodie