Uygulamamda "İşletme" ve "Kategori" olmak üzere iki ana modelim var. Şu anda çok iyi çalışan bir text_field aramam var. Ayrıca, kullanıcıların mevcut kategorileri içeren bir collection_select ürününü temel alarak belirli bir kategoride 'ait olduğunu' gösteren İşletmeler için arama yapma yeteneğini de uygulamaya çalışıyorum.Koleksiyon_select kullanarak searchkick gem kullanarak bir belongs_to için nasıl arama yapabilirim?
Koleksiyon_select çalışmasına sahibim, ancak seçili kategoriye ait olan işletmeleri göstermek için nasıl elde edeceğimi anlayamıyorum.
def search
if params[:search].present?
@businesses = Business.search(params[:search])
else
@businesses = Business.all.paginate(page: params[:page], per_page: 6)
end
end
Arama formu::
<%= 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 %>
Ve benim şimdiki kategori koleksiyonu belirleyin:
<%= 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 %>
biliyorum ben burada
arama benim İş Denetleyicisi içinde bilgi olan Koleksiyonun işletmeleri görüntülemesi gerektiğini seçtiğini söylemem gerekiyor, ancak nasıl destekleneceğimi anlayamıyorum. Bunu uygular. GÜNCELLEMEAşağıdaki kodu çalıştı ve sonuç görüntülenir: Model
def search_data
{
name: name,
category_id: category_id
}
end
My Business Kontrolörü
My Business
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
My Form
<%= 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 %>
Paramleri kontrol ettiniz mi? Params [: category_id] 'mevcut mu? Ya da "param [] arama] içinde gelir? Aldığın paramları kontrol et ve gönder. – Deep
Yani '<% = change_select değişkenini değiştiriyorsunuz diyorsunuz: search, params [: search], Category.all.order ('name ASC'),: id,: name%>' Bu herhangi bir sonuç göstermedi ya. – ZMoodie
Oyun oynadıktan sonra, çoğunlukla doğru işletmelerin görünmesini sağlayabiliyordum, ancak bazı kategoriler en üstte doğru işletmeyi gösteriyor ve bunun altında birkaç işletme daha listeliyor. Bunu gerçekleştirebilmemin tek yolu, İşi korumaktır.arama (params [: search]) 'biçiminde ve bu şekilde formumu görüntüle <% = collection_select: arama, params [: category_id], Category.all.order ('isim ASC'),: id,: name %> 'Aksi takdirde hiçbir şey görünmeyecek. – ZMoodie