Machen Sie Ihre Links einen Link zurück zu den Produkten, aber Kategorie als URL-Parameter hinzufügen.
Dann in Ihrem Controller, wenn der Parameter vorhanden ist, Filter Ergebnisse basierend darauf. Wie zum Beispiel:
Ausblick:
<h2> Find Product by Category </h2>
<%= link_to "Electronics", products_path(:category=>"electronics")
-Controller
def index
if params[:category]
@products = Product.where(:category => params[:category])
else
@products = Product.all
end
end
Basierend auf Kommentar von egyamado:
Wenn Sie Flash-Mitteilungen hinzufügen möchten wäre es so etwas wie dieses:
def index
if params[:category]
@products = Product.where(:category => params[:category])
flash[:notice] = "There are <b>#{@products.count}</b> in this category".html_safe
else
@products = Product.all
end
end
Wenn Sie nur die Meldung anzeigen möchten, dass keine Produkte vorhanden sind, fügen Sie einfach if @products.empty?
am Ende der Flash-Bezeichnung
hinzu. Sie können auch eine vollständige Bedingung erstellen, wenn Sie eine Fehlermeldung anzeigen möchten, wenn keine Produkte vorhanden sind und eine Nachricht, wenn es Produkte gibt
def index
if params[:category]
@products = Product.where(:category => params[:category])
if @products.empty?
flash[:error] = "There are <b>#{@products.count}</b> in this category".html_safe
else
flash[:notice] = "There are <b>${@products.count}</b> in this category".html_safe
end
else
@products = Product.all
end
end
Genau das, was ich versucht habe zu kommen. Danke vielmals. –
Alter ... Ich habe diese genaue Antwort gesucht, wie es nach zwei Monaten aussieht. Genaue Frage, perfekte Antwort. Sehr, sehr geschätzt. Scheint so einfach jetzt, dass ich es ansehe. – etusm
Danke @trh, Stimme hoch. Wenn in Ihrer Lösung eine Kategorie ausgewählt ist, werden alle zugehörigen Produkte angezeigt. Wenn keine Kategorie ausgewählt wurde, zeigen Sie alle Produkte an. Aber, wie Sie eine Kategorie wählen, die keine Produkte hat, wo sagen wir, dass alle Produkte mit Flash-Nachricht sagen: "Keine Produkte für Elektronik verfügbar"? Danke! – egyamado