2010-05-11 6 views
19

In einem Rails-Modell möchte ich in der Lage sein, den Host und den Port herauszufinden. Zum Beispiel, wenn ich in einer Testumgebung bin, würde es http://localhost:3000/ zurückgeben, und wenn ich in der Produktion war, würde es so etwas wie http://my.application.com/ zurückgeben?Wie bekomme ich den Host und den Port in einer Rails-Anwendung

+0

Duplikat: http: // Stackoverflow. com/questions/42566/getting-the-hostname-oder-ip-in-ruby-on-rails – ghoppe

+0

möglich duplikat von [Wie finde ich den lokalen Port eine rails-Instanz wird ausgeführt auf?] (http://stackoverflow.com/questions/1554267/how-to-find-the-local-port-a-rails-instance-is-running-on) für den Port, http: // stackoverflow .com/questions/42566/hostname-oder-ip-in-ruby-on-rails für den Host. –

Antwort

6

Sie können diese Werte in Ihrem Controller erhalten (request.host , request.port usw.).

Sie müssten dies Ihren Modellen über Parameter mitteilen, da das Anfrageobjekt nur in den Controllern verfügbar ist.

17
"#{root_url}" 

, die in ihrem routes.rb erklärt werden sollte

+0

das ist, was ich gesucht habe. request.host_with_port hat zuerst für mich funktioniert, aber ich brauchte das führende 'HTTP: //'. Dies funktioniert genau wie jeder andere URL/Pfad-Helfer. – Dudo

+0

Ich denke, die Antwort ist viel besser als der Rest .. Keine Anfrage Inspektion, nur einfache Router-Helfer-Methode –

3

Sie können diese verwenden

<%= request.protocol + request.host_with_port %> 
#=> https://example.com:3000 
<%= request.protocol + request.host %> 
#=> https://example.com 
Verwandte Themen