2016-03-20 12 views
2

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ÜNCELLEME

Aş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 %> 
+0

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

+0

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

+0

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

cevap

0

bu sizin için çalışma Will:

def search_data 
    { 
    name: name, 
    category_id: category_id 
    } 
end 

Ya senin de (emin değilim) bu yazabilirsiniz düşünüyorum: Yani category: category.name

Business modelde

bu yöntemi tanımlamak Bu, category'u da endeksleyecektir ve kontrol cihazınızda şu şekilde arama yapabilirsiniz:

senin form göre
Business.search "apples", where: { category_id: params[:category_id] } 

veya category.name eser o zaman { category: params[:category] }

Değişim .

+0

Önerilerinizi birkaç farklı şekilde denedim, ancak sonuç yok görünür veya rastgele görünen birkaç tanesi görünür. – ZMoodie

+0

Denediğiniz kodu yayınlayabilir misiniz? – Deep

+0

Yukarıdaki kodumu güncelledim. – ZMoodie

İlgili konular