2016-06-04 32 views
1

Ich habe einen Produktindex mit einer Liste von Kategorien. Ich habe in meinem Produktmodell für jede Kategorie benannte Bereiche verwendet, wobei jede Kategorie in der Ansicht über einen Link verfügt, der Benutzer an einen entsprechend gefilterten Produktindex weiterleitet. Ich habe eine Liste von Routen für jeden Bereich. In der Ansicht möchte ich den Routenpfad dynamisch durch eine Variable wie VAR_products_path ersetzen. Was ist die richtige Syntax dafür?Ändern Sie den Namen des Routenpfads mit einer Variablen

Produkte Index

- @categories.each do |cat| 
- @product = Product.where("category_id = ?", cat.id) 
= link_to "#{cat.category_name}", cat.category_name_products_path# architecture_products_path or arts_products_path 

Produkte Controller

def architecture 
params[:category] 
@categories = Category.all 
@products = Product.architecture 
render action: :index 
end 

Routen

Datei
resources :products do 
collection do 
get :architecture 
get :arts 
get :business 
... 

Produktmodell

scope :architecture, -> { where(category_id: 1) } 
scope :arts -> { where(category_id: 2) } 

Antwort

0
= link_to cat.category_name, public_send("#{cat.category_name}_products_path") 

Obwohl ich in Betracht ziehen würde, Ihre Routen zu ändern, um den Kategorienamen als Argument zu verwenden, z. B. /products/{category}, damit Sie es besser verwenden können products_path(cat.category_name).

Verwandte Themen