Also, was ich habe, ist ein Modell Referent
, die mehrere Attribute zum Beispiel nom
und prenom
hat. Ich konnte jedes Attribut in meinem Modell mit einem Suchwert suchen. Aber dann habe ich versucht, eine text_field
für jedes Attribut zu haben, also würde ich für nom
einen text_field
haben und für prenom
würde ich einen anderen haben.Suche mehrere Felder mit mehreren Werten
So würde es für alle Referent
wer die nom
und die prenom
haben, aber ich bin nicht in der Lage, diese beiden suchen zu trennen. Im Moment nehmen sie nur einen des Wertes und die Suche in beide nom
und prenom
mit dem gleichen Wert
Ausblick:
<h2>Search Referent</h2>
<%= form_tag(referents_path, :method => "get", id: "search-form") do %>
<%= text_field_tag :search, params[:search], placeholder: "Nom" %>
<%= text_field_tag :search, params[:search], placeholder: "Prenom" %>
<%= submit_tag "Search", class: 'btn btn-info' %>
<% end %>
Controller:
def index
@referents = Referent.all
if params[:search]
@referents = Referent.search(params[:search]).order("created_at DESC")
else
@referents = Referent.all.order("created_at DESC")
end
end
Modell:
def self.search(search)
where("nom || prenom ILIKE ?", "%#{search}%")
end
Gerade jetzt scheint es nur den Wert der zweitenzu nehmenund verwenden Sie das für die Suche. Ich benutze postgresql.
Die Vollansicht:
<div class="container">
<h2>Search Referent</h2>
<%= form_tag(referents_path, :method => "get", id: "search-form") do %>
<%= text_field_tag :search_nom, params[:search], placeholder: "Nom" %>
<%= text_field_tag :search_prenom, params[:search], placeholder: "Prenom" %>
<%= submit_tag "Search", class: 'btn btn-info' %>
<% end %>
<h2>List de Referent</h2>
<table class="table table-hover">
<tr>
<th>Nom</th>
<th>Prenom</th>
<th>Titre</th>
<th>Departement</th>
<th>Cellulaire</th>
<th>Bureau</th>
<th>Fax</th>
<th>Courriel</th>
<th>Organisme Referent</th>
</tr>
<% @referents.each do |referent| %>
<tr>
<td><%= referent.nom %></td>
<td><%= referent.prenom %></td>
<td><%= referent.titre %></td>
<td><%= referent.departement %></td>
<td><%= referent.cellulaire %></td>
<td><%= referent.bureau %></td>
<td><%= referent.fax %></td>
<td><%= referent.courriel %></td>
<td><%= link_to referent.organismereferent.nom_organisation, organismereferent_path(referent.organismereferent_id) %></td>
</tr>
<% end %>
</table>
</div>
Ihre Implementierung ist mit zwei Textfelder zu verhindern, und die jeweils eine andere Datenbankspalte sucht. * Warum also nicht zwei verschiedene HTTP-Parameter senden *? –
Mit Ihrer aktuellen Implementierung haben Sie immer das Problem, dass das Feld 'prenom' mit dem' nom' Wert durchsucht wird und umgekehrt. –
Die Frage ist nicht ganz klar. Hast du zwei Suchfelder hinzugefügt? Eine für nom und eine andere für prenom? Sollte die Suche ein AND oder ein OR sein? Wie in "nom Like% nom_search% ODER prenom LIKE% prenom%? Oder" nom Like% nom_search% UND prenom LIKE% prenom% ?? – Surya