2016-03-27 7 views
0

Meine erste Frage SO zu ignorieren ... Bitte sanft :)Rails 4.2 Routing-Teil einer URL

Ich habe eine bestimmte Routing-Anforderung für eine Anwendung Rails 4.2, aber ich bin zu kämpfen, es zu erreichen. Mein Kunde bietet seinen Mitgliedern eine Website an, um die Produkte des Unternehmens zu verkaufen und eine Verkaufsprovision zu verdienen (so wie es Amway tut) ... Grundsätzlich ein verherrlichtes Partnerprogramm. Das Muster ihrer URLs lautet https://www.company.com/membername/products/something-you-can-buy. Die Anforderung ist, dass sie dieses Muster in der neuen Anwendung beibehalten, die ich für sie erstelle.

Der Membername Teil kann alles sein, und diese Anwendung hat keinen Zugriff auf die vorhandene Benutzerdatenbank ... Wir brauchen Schienen, um den Membername Teil der URL zu ignorieren und Routing basierend auf dem Rest der URL zu verarbeiten. Also, wenn die URL https://www.company.com/hephalump/products/hamburger ist, müssen wir Routing, um das hephalump Bit zu ignorieren, aber behalten Sie es immer noch in der URL, und verarbeiten Sie das Routing basierend auf den Produkten/Hamburger Teil. Der Kunde benötigt auch das Hephalump-Bit, um während der gesamten Anwendung dort zu bleiben, und wir müssen in der Lage sein, es als einen Parameter zum Zeitpunkt des Kaufs zu erfassen (das ist einfach genug).

Ich habe mit diesem Kopf für zwei Tage meinen Kopf gegen die Wand geschlagen, ohne Glück ... Jede Hilfe würde sehr geschätzt werden.

+0

So etwas wie das? http://stackoverflow.com/questions/9284615/is-it-possible-to-namespace-a-whole-rails-app-ie-adding-to-the-url-path –

Antwort

1

Es gibt viele Möglichkeiten, dies zu tun. Hier ist eine:

get '/:_member/products/:product_name' => 'products#show' 

Ersatz die richtige Controller-Name-Präfix für products in products#show und die richtige Aktionsname für show. In diesem Controller params werden beide :_member und :product_name Schlüssel haben, und Sie können einfach den :_member Schlüssel ignorieren.

Sie können auch Einschränkungen hinzufügen, welche Muster ein Mitglied oder einen Produktnamen darstellen kann, z.B .:

get '/:_member/products/:product_name' => 'products#show', 
    contraint: { _member: /\w+/ } 
+0

Eine Million Dankes ist ... Works perfekt! – hephalump

Verwandte Themen