Jak wskazał elektronaut, jest to prawdopodobnie coś, co powinno być obsługiwane w konfiguracji serwera proxy. Powiedział, że ActiveSupport :: UrlFor # url_for ma pewne informacje, które mogą być przydatne. Spójrz na
http://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/url_for.rb
Co myślę, że sprowadza się do przekazywania dwóch argumentów do twoich połączeń url_for i/lub link_to. Pierwszym z nich jest :port => 123
argument drugi :only_path => false
tak, że generuje pełny link w tym domeny, portu itp
więc podczas generowania linku, można zrobić:
link_to 'test', root_url(:port => 80, :only_path => false)
i podczas tworzenia niestandardowego URL może zrobić:
url_for :controller => 'test', :action => 'index', :port => 80, :only_path => false
Dla przekierowania:
redirect_to root_url(:port => 80, :only_path => false)
Mam nadzieję, że to pomoże, a jeśli nie, możesz dokładniej opisać, jak generujesz adresy URL, jakie tory generują dla ciebie i co chcesz wygenerować.
Aktualizacja: nie byłem tego świadomy, ale wydaje się, można ustawić domyślne dla szyn adres URL generuje z url_for, który jest używany przez wszystko inne, co generuje linki i/lub adresów URL.Jest dobry napisać o tym tutaj: http://lucastej.blogspot.com/2008/01/ruby-on-rails-how-to-set-urlfor.html
Albo Podsumowując dla ciebie:
Dodaj to do swojej application_controler.rb
def default_url_options(options)
{ :only_path => false, :port => 80 }
end
a to:
helper_method :url_for
pierwszy blok ustawia domyślne ustawienia w kontrolerach, a drugi powoduje, że pomocnik url_for używa tego, który znajduje się w kontrolerach, więc wartości domyślne również odnoszą się do tego kontrolera.
co działa na porcie 9000? haproxy deamon lub nginx, i dlaczego używasz haproxy i nginx? – jigfox
Demon haproxy znajduje się na porcie 80, a ja mam instancje nginx działające na różnych portach. – Garrett