Ich erstelle dynamisch URLs der Form username.users.example.com
:
Alle *.users.example.com
-Anfragen sollten zu einem bestimmten Controller / einer bestimmten Aktion gehen. Wie definiere ich das in routes.rb
?
Alle anderen Anfragen an www.example.com
gehen zur normalen Liste der Routen in meiner routes.rb
Datei.
UPDATE : Ich sehe die Railscasts über Subdomains und es zeigte das folgende Bit des Codes, der genau zu sein scheint, was ich brauche (hat den Controller und die Subdomain geändert):
%Vor% Das Problem ist, dass es nur der Root-URL entspricht. Ich brauche das, um JEDE mögliche URL mit einer *.users
Subdomain übereinzustimmen. Also würde ich es natürlich an die Spitze meiner routes.rb
Datei setzen. Aber wie lege ich eine Sammelroute fest? Ist es einfach '*'
? Oder '/*'
?
Ich denke, Sie müssen nur Folgendes tun:
Erstellen Sie eine Klasse Subdomain
in lib
:
und in deinem routes
:
Sie können die Constraint-Route basierend auf bestimmten Kriterien dynamisch erstellen, indem Sie eine matches?
-Methode erstellen
Sagen wir, wir müssen die Subdomain der URL filtern
%Vor% Was wir hier machen, ist die Suche nach der URL, wenn sie mit der Sub-Domain users
beginnt und dann nur users#show
action. Ihre Klasse muss mathes?
method entweder Klassenmethode oder Instanzmethode haben. Wenn Sie es zu einer Instanzmethode machen wollen, tun Sie
Sie können dieselbe Sache auch mit lambda
erreichen, wie unten.
Anstatt die Klasse zu schreiben, können wir auch lambdas
Tags und Links ruby-on-rails-3 ruby-on-rails ruby-on-rails-4 ruby-on-rails-3.2 routes