Ich möchte, dass mein Suchformular für alle URLs funktioniert, anstatt auf die Nachrichtenseite umzuleiten. Zum Beispiel auf der Suche nach "hallo":Rails-Suchformular ohne Pfad
on /messages return /messages?utf8=✓&search=hi&commit=Search
on /posts return /posts?utf8=✓&search=hi&commit=Search
In meiner Anwendung Ansicht (Bootstrap-Styling):
<%= form_tag(messages_path, :method => "get", class: "navbar-form navbar-left") do %>
<div class="form-group">
<%= text_field_tag :search, params[:search], placeholder: "Search", class: "form-control" %>
</div>
<%= submit_tag "Search", class: "btn btn-default" %>
<% end %>
Nachrichten Controller:
def index
if params[:search]
@messages = Message.search(params[:search]).order("created_at DESC")
else
@messages = Message.all.order("created_at DESC")
end
end
Benutzer-Controller:
def index
if params[:search]
@users = User.search(params[:search]).order("created_at DESC")
else
@users = User.all.order("created_at DESC")
end
end
Nachrichtenmodell:
def self.search(search)
where("title LIKE ?", "%#{search}%")
end
User-Modell:
def self.search(search)
where("username LIKE ?", "%#{search}%")
end
Wenn ich kopieren und einfügen, um die Parameter (?utf8=✓&search=hi&commit=Search)
auf die Seiten, sie funktionieren gut. Ich habe versucht, messages_path
aus dem Formular zu entfernen, aber ich habe einen Fehler erhalten. Wie verwende ich einen Formularpfad, der sich abhängig davon ändert, von welchem Controller ich ihn verwende?
Danke, funktioniert wunderbar! – Robert