Ich versuche Subdomains in Rails 3 per Ryan Bates screencast on subdomains einzurichten. Aber es funktioniert nicht für mich. Ich habe folgendes Setup:requestsubdomain wird während des bedingten Routings nicht in Rails 3 gesetzt
# routes.rb
constraints(Subdomain) do
get 'devices' => 'devices#all'
end
# lib/subdomain.rb
class Subdomain
def self.matches?(request)
# binding.pry
request.subdomain.present? && request.subdomain == "admin"
end
end
Laden der URL admin.localhost:3000/devices
sollte Route mich devices#all
aber ich eine Routing-Fehler erhalten Routing Error No route matches [GET] "/devices"
klar meine Routing nicht funktioniert.
ich ein Setup pry
Debug-Sitzung, wo der Kommentar oben ist, und es wird getroffen, so meine Einschränkung funktioniert, aber ich bekomme die folgende Ausgabe:
[1] pry(Subdomain)> request.subdomain
=> ""
[2] pry(Subdomain)> request.subdomains
=> []
[3] pry(Subdomain)> request.host
=> "admin.localhost"
So Schienen ist Kommissionierung nicht den Admin-up Teil der URL und platzieren Sie es in der Subdomain-Variable. Während ich einfach den Host-Wert verwenden könnte, um auf die Admin-Routen zu filtern, möchte ich die Dinge sauber und korrekt halten.
Wie kommt es, dass rails den Subdomain-Wert nicht festlegt?
bearbeiten
Beide jdoe und coreyward sind richtig mit ihren Antworten. Was mich abwarf war, dass ich auch pow
und xip.io
benutzte, um auf die Seite zuzugreifen und denselben Fehler zu bekommen. Was war seltsam, weil http://admin.app_name.192.168.1.68.xip.io/devices
hat eine Tld> 1. Was passierte war, dass die Subdomain für war admin.app_name.192.168.1.68
, die auch fehlschlägt angesichts der Übereinstimmungen Logik und nicht routen.
> Wie stellt Rails den Subdomain-Wert nicht ein? Ich denke, es ist immer noch Rack an diesem Punkt. –
@OscarDelBen ist es nicht.Es ist ActionDispatch 'request.inspect # =>
+1 für zusätzliche Erläuterungen zu Pow & Xip.io. :) – coreyward