Frage

Ich habe versucht, routes.rb zu verwenden für das Erstellen eines URL / gleiches-to-: Produkt (wo Produkt dynamisch) für meine Website. Das Problem ist, dass routes.rb leicht URLs wie / unterstützt: Produkt-ähnliche, aber unterstützt nicht die erste, weil es erfordert: Produkt mit einem Abscheider vorgeschaltet wird ( ‚/‘ ist ein Separator, sondern ‚-‘ nicht). Die Liste der Separatoren ist in Action :: Routing :: SEPARATOR.

Ich kann hinzufügen, ‚-‘ als Trennzeichen, weil: Produkt auch einen Bindestrich enthalten. Was ist der beste Weg, um eine URL wie diese unterstützt?

Eine Möglichkeit, dass ich erfolgreich versucht habe, ist nicht routes.rb zu verwenden und die URL setzt Logik in der Steuerung Parsen selbst, aber das ist nicht der sauberste Weg.

War es hilfreich?

Lösung

In der Tat Sie - als Trennzeichen hinzufügen können, dann Route Globbing verwenden.

map.similar_product '/similar-to-*product', :controller => 'products', :action => 'similar'

dann in Products # ähnlich

@product = Product.find_by_slug params[:product].join('-')

Obwohl Refactoring scheint schöner, da bei diesem Ansatz die Sie benötigen, um speziell alle Schnecken zu behandeln, die Bindestriche enthalten.

Andere Tipps

würde ich Ihre URLs Refactoring so dass sie einfach „ähnlich zu / Produkt“

Eine einfache Lösung wird mit einem Routing-Filter . Siehe README für Details.

Mit Routing-Filter können Sie eine URL /similar-to-:product haben, Vorprozess es zu /similar-to/:product bevor es Anerkennung Routing bekommt. Sie wollen auch nachbearbeiten Pfade erzeugt zurück von /similar-to/:product /similat-to-:product.

Ich bin ein wenig verwirrt, aber könnten Sie vielleicht „to“ als Trennzeichen hinzufügen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top