2010-05-11 9 views
19

W modelu Rails, chcę być w stanie dowiedzieć się host i port. Na przykład, jeśli znajdę się w środowisku testowym, zwróci on http://localhost:3000/, a gdybym był w produkcji, zwróciłby coś takiego, jak http://my.application.com/?Jak uzyskać hosta i port w aplikacji Railsy?

+0

duplikat: http: // stackoverflow. com/questions/42566/pobieranie-nazwy-hosta-lub-ip-in-ruby-on-rails – ghoppe

+0

możliwy duplikat [Jak znaleźć port lokalny instancja szyny jest uruchamiana na?] (http://stackoverflow.com/questions/1554267/how-to-find-the-local-port-a-rails-instance-is-running-on) dla portu, http: // stackoverflow .pl/questions/42566/pobieranie nazwy hosta-lub-ip-in-ruby-on-rails dla hosta. –

Odpowiedz

6

można dostać te wartości w kontrolerach (request.host , request.port itd.).

Będziesz musiał podać to swoim modelom za pomocą parametrów, ponieważ obiekt żądania jest dostępny tylko w kontrolerach.

17
"#{root_url}" 

które powinny być zadeklarowane w routes.rb

+0

tego właśnie szukałem. request.host_with_port pracował dla mnie na początku, ale potrzebowałem wiodącego 'HTTP: //'. działa to tak, jak każdy inny pomocnik URL/ścieżki. – Dudo

+0

Myślę, że odpowiedź jest znacznie lepsza niż reszta .. Brak kontroli wniosku, po prostu metoda routera pomocnika –

3

Można użyć tej

<%= request.protocol + request.host_with_port %> 
#=> https://example.com:3000 
<%= request.protocol + request.host %> 
#=> https://example.com 
Powiązane problemy