就像 elektronaut 指出的那样,这可能应该在您的代理配置中处理。也就是说,ActiveSupport::UrlFor#url_for 有一些可能有用的信息。看看http://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/url_for.rb
我认为归结为将两个参数传递给您的 url_for 和/或 link_to 调用。第一个是:port => 123
参数,第二个是:only_path => false
生成完整的链接,包括域、端口等。
因此,在生成链接时,您可能会这样做:
link_to 'test', root_url(:port => 80, :only_path => false)
在创建自定义 url 时,您可能会这样做:
url_for :controller => 'test', :action => 'index', :port => 80, :only_path => false
对于重定向:
redirect_to root_url(:port => 80, :only_path => false)
我希望这会有所帮助,如果没有,您能否更具体地说明如何生成 URL、rails 为您生成什么以及您希望它生成什么。
更新:
我不知道这一点,但您似乎可以为使用 url_for 生成的 URL 的 rails 设置默认值,其他所有生成链接和/或 URL 的东西都会使用它。这里有一篇很好的文章:http: //lucastej.blogspot.com/2008/01/ruby-on-rails-how-to-set-urlfor.html
或者给你总结一下:
将此添加到您的application_controler.rb
def default_url_options(options)
{ :only_path => false, :port => 80 }
end
和这个:
helper_method :url_for
第一个块在控制器中设置默认值,第二个块使 url_for 助手使用在控制器中找到的那个,因此默认值也适用于它。