2010-01-11 67 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