Giống như elektronaut đã cho biết, đây có lẽ là thứ cần xử lý trong cấu hình proxy của bạn. Điều đó nói rằng, ActiveSupport :: UrlFor # url_for có một số thông tin có thể hữu ích. Hãy xem http://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/url_for.rb
Những gì tôi nghĩ rằng nó sôi xuống để chuyển hai đối số vào url_for và/hoặc liên kết_to cuộc gọi của bạn. Đầu tiên là lập luận :port => 123
, thứ hai là :only_path => false
để nó tạo ra các liên kết đầy đủ bao gồm tên miền, cảng vv
Vì vậy, khi tạo ra một liên kết, bạn có thể làm:
link_to 'test', root_url(:port => 80, :only_path => false)
và khi tạo ra một tùy chỉnh url bạn có thể làm:
url_for :controller => 'test', :action => 'index', :port => 80, :only_path => false
Đối với một chuyển hướng:
redirect_to root_url(:port => 80, :only_path => false)
Tôi hy vọng điều này sẽ hữu ích, và nếu không, bạn có thể cụ thể hơn về cách tạo URL của mình, những đường ray nào tạo ra cho bạn hay không và những gì bạn muốn tạo.
Cập nhật: Tôi đã không nhận thức được điều này, nhưng có vẻ như bạn có thể thiết lập mặc định cho đường ray của URL tạo với url_for, được sử dụng bởi mọi thứ khác mà tạo ra các liên kết và/hoặc URL.Có một ghi tốt lên về nó ở đây: http://lucastej.blogspot.com/2008/01/ruby-on-rails-how-to-set-urlfor.html
Hoặc để tóm tắt cho bạn:
Thêm này để bạn application_controler.rb
def default_url_options(options)
{ :only_path => false, :port => 80 }
end
và điều này:
helper_method :url_for
Các bộ chặn đầu tiên đặt mặc định trong bộ điều khiển, thứ hai làm cho trình trợ giúp url_for sử dụng bộ tìm thấy trong bộ điều khiển, do đó các giá trị mặc định cũng áp dụng cho bộ điều khiển đó.
những gì đang chạy trên cổng 9000? haproxy deamon hoặc nginx, và tại sao bạn sử dụng haproxy và nginx? – jigfox
Daemon haproxy nằm ở cổng 80 và tôi có các phiên bản nginx chạy trên nhiều cổng khác nhau. – Garrett