J'ai un problème. J'ai une vue de spectacle qui agit comme un tableau de bord et apporte des enregistrements d'autres modèles, puis des modèles associés à cela. J'ai un formulaire de recherche simple qui fonctionne bien pour rechercher un modèle, mais je ne sais pas comment le faire passer par les modèles associés. Je ne pense pas qu'une recherche en texte intégral soit nécessaire et je ne sais pas comment cela fonctionnerait parce que je ne veux pas quelque chose qui va chercher sur l'ensemble du site.Recherche de rails sur plusieurs modèles
Merci
entreprises/show/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
entreprises_controller
@soldiers = @company.soldiers.search(params[:search])
@primary = @company.primaries.find(:all,:conditions => ["relationship = 'Spouse'"])
La réponse ci-dessous je pense est le meilleur mais juste au cas où quelqu'un est intéressé, c'est désordre mais fonctionne aussi: find (: all,: joins =>: primaires,: conditions => ['soldiers.email LIKE? OU primaries.email LIKE? OU les soldats.firstname LIKE? OR primaries.firstname LIKE? OU soldiers.lastname LIKE? OR primaries.lastname LIKE? ', "% # {[Recherche]}%", "% # {[recherche] }% ","% # {[recherche]}% ","% # {[recherche]}% ","% # {[recherche]}% ","% # {[recherche]}% "],: order => 'soldiers.lastname') – looloobs