2010-01-11 2 views
9

문제가 있습니다. 나는 대시 보드의 역할을하는 쇼 뷰를 가지고 있으며, 다른 모델의 레코드를 가져온 다음 그 모델과 연관된 모델을 제공합니다. 한 모델을 검색해도 괜찮은 간단한 검색 양식이 있지만 관련 모델을 통해 검색하는 방법을 알지 못합니다. 전체 텍스트 검색이 필요하다고 생각하지 않으며 전체 사이트에서 검색 할 무언가를 원하지 않기 때문에 어떻게 작동하는지 확신 할 수 없습니다.여러 모델에서 레일 검색

감사

회사/쇼/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 => : primary, : conditions => [ 'soldiers.email LIKE? OR primaries.lastname LIKE? ', "% # {[search]} %", "% # {[search]", "" % # {[search]} % ","% # {[search]} % ","% # {[search]} % ", : order => 'soldiers.lastname') – looloobs

답변

4

어떻게 응용 프로그램 뒤에 검색 엔진에 대한 같은 Thinking Sphinx? 캐싱과 검색의 노력을 다른 사람에게 맡기고 Rails 앱이 결과를 제공하도록하십시오.

+0

아 나는 오해하고 생각했다. 스핑크스는 응용 프로그램을 광범위하게 검색했다. 저를 지적 해 주셔서 고마워요. – looloobs

관련 문제