Rails:如何获取当前主机,或者使用它构建URL?

Hap*_*per 22 ruby url host ruby-on-rails

我需要使用主机来构建具有不同端口的URL.

例如,如果主机是example.com,我需要生成一个类似http://example.com:8080/的URL

我需要它是可移植的,所以当我在我的本地环境时,它显示http:// localhost:8080 /.

有任何想法吗?

Ale*_*x D 43

我经常使用before_filterin ApplicationController来设置一个带有主机名的实例变量,如下所示:

@hostname = request.host || "www.mydomain.com"
Run Code Online (Sandbox Code Playgroud)

您还可以使用request.port获取请求所来自的端口号(取自HTTP标头).


San*_*ing 8

基本上你需要根据当前的url和其他一些端口号生成url.可以这样做 -

request.url(:port => 20)
Run Code Online (Sandbox Code Playgroud)

在rails控制台上

app.root_url(:port => 20)
 => "http://www.example.com:20/" 
Run Code Online (Sandbox Code Playgroud)

从url使用中提取主机

request.host
Run Code Online (Sandbox Code Playgroud)