2010-01-11 68 views
9

我遇到問題。我有一個顯示視圖,充當儀表板並引入其他模型的記錄,然後引入與其相關的模型。我有一個簡單的搜索表單,可以很好地搜索一個模型,但我不知道如何通過它的關聯模型來查看它。我不認爲全文搜索是必要的,我不確定它是如何工作的,因爲我不想要在整個網站上搜索的東西。Rails在多個模型中搜索

感謝

公司/顯示/ 1

<div id="form"> 
    <div class="search"> 
    <% form_tag battalion_company_path, :method => :get do %> 
    <p> 
    <%= text_field_tag :search, params[:search] %> 

    <%= submit_tag "Search", :name => nil %> 

    </p> 
<% end %> 
</div> 
</div> 

<div id="bc_box"> 
<% @soldiers.each do |soldier| %> 
<div id="bc_focus"> 
    <div class="right"> 
    <%= link_to image_tag("../images/buttons/info.png", :border=>0), battalion_company_soldier_path(@battalion, @company,soldier) %> 
    <%= link_to image_tag("../images/buttons/edit.png", :border=>0), edit_battalion_company_soldier_path(@battalion, @company,soldier) %> 
    </div> 
    <%=h soldier.rank %> <%=h soldier.lastname %><br /> 
    Cell: <%=h soldier.cellphone %><br /> 
    <% soldier.primaries.each do |primary| %> 
    <p> 
    <%=h primary.firstname %> <%=h primary.lastname %> (<%=h primary.relationship %>)<br /> 

    (c):<%=h primary.cellphone %><br /> 
    <%=h primary.email %><br /> 
    </p> 
    <% end %> 

</div> 
    <% end %> 
</div> 

soldier.rb

def self.search(search) 
    if search 
    find(:all, :conditions => ['email LIKE ? OR lastname LIKE ? OR firstname LIKE ?', "%#{search}%", "%#{search}%", "%#{search}%"]) 
    else 
    find(:all, :order => 'lastname') 
    end 
end 

companies_controller

@soldiers = @company.soldiers.search(params[:search]) 
@primary = @company.primaries.find(:all,:conditions => ["relationship = 'Spouse'"]) 
+2

下面的答案我認爲是最好的,但如果有人有興趣,這是混亂的,但也可以工作: find(:all,:joins =>:primaries,:conditions => ['soldiers.email LIKE? OR primaries.email LIKE?OR soldiers.firstname LIKE?OR primaries.firstname LIKE?OR soldiers.lastname LIKE?OR primaries.lastname LIKE?',「%#{[search]}%」,「%#{[search] %「,」%#{[search]}%「,」%#{[search]}%「,」%#{[search]}%「,」%#{[search]}%「],: order =>'soldiers.lastname') – looloobs 2010-01-11 21:07:31

回答

4

談談你的應用程序背後的搜索引擎,如Thinking Sphinx?將緩存和搜索工作留給其他人,讓你的Rails應用程序提供結果。

+0

啊我誤解了,認爲思維獅身人面像只搜索應用程序範圍。謝謝你指點我。 – looloobs 2010-01-11 21:06:41