簡體   English   中英

如何在 Rails 應用程序中獲取主機和端口

[英]How do I get the host and port in a Rails application

在 Rails 模型中,我希望能夠找出主機和端口。 例如,如果我在測試環境中,它會返回http://localhost:3000/ ,如果我在生產環境中,它會返回類似http://my.application.com/東西?

host_with_port應該適合你: httphost_with_port

"#{root_url}"

應該在您的routes.rb中聲明

你可以用它

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

在字符串連接中使用時

"#{request.protocol}#{request.host_with_port}/book/1"
# https://example.com:3000/book/1

您可以在控制器中獲取這些值(request.host,request.port等)。

您必須通過參數將其提供給模型,因為請求對象僅在控制器中可用。

提供的其他答案在控制器或視圖中工作,但不能在例如:消息傳遞作業中提供主機名。 Action mailer 有它自己的配置,你可能會使用它。

# Access host from anywhere 
Rails.configuration.action_mailer.default_url_options[:host]

# Defined in development.rb/test.rb/production.rb
config.action_mailer.default_url_options = { host: 'www.example.com' }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM