2013-05-27 21 views
14

Uygulamamın başlığında bir arama formum var ve bu arama formunu uygulama içinde birden çok modelde aramak için kullanmak istiyorum.Ransack ile birden fazla modeli aynı anda arayın

Örneğin /search?q=rails gibi bir istek Work, Project, User ve bunların tanımlanan nitelikler gibi birden modeller aracılığıyla bir arama tetiklemesi. Ransack'ı kullanmak istedim çünkü zaten uygulamayı farklı bir alanda Work modelinde kullanıyorum.

Sanırım Ransack'ı henüz anlamıyorum ve belgeler,'u search_form_for @q formunda kullanmak için tanımlamanız gerektiğine dikkat çekiyor. Belirli bir modeli önceden tanımlamak zorunda olmadığınız bir yol var mı? Ve sadece search_form_for :q gibi parametre ismini iletin mi?

cevap

32

Tamam, soru sorduktan sonra cevap kafamın içine düştü. Bunun yerine ben şimdi sadece şu şekilde form_tag yardımcı kullanıyorum search_form_for yardımcısı

:

<%= form_tag search_path, method: :get do %> 
    <%= text_field_tag :q, nil %> 
<%= end %> 

ve arama eylem Sadece yapın:

q = params[:q] 
@works = Work.search(name_cont: q).result 
@projects = Project.search(name_cont: q).result 
@users = User.search(name_cont: q).result 

Bu benim için çalışıyor . Umarım bu da bir başkasına yardım eder.

+3

Güzel çözüm - Paylaşım için teşekkürler! – scarver2

+1

Çok hoş geldiniz. – Daniel

İlgili konular