[英]How do I get the host and port in a Rails application
在 Rails 模型中,我希望能夠找出主機和端口。 例如,如果我在測試環境中,它會返回http://localhost:3000/
,如果我在生產環境中,它會返回類似http://my.application.com/
東西?
host_with_port
應該適合你: http : host_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等)。
您必須通過參數將其提供給模型,因為請求對象僅在控制器中可用。
你可以使用request_uri
獲得完整的uri( http:// localhost:3000 /或http://my.application.com/等)
http://apidock.com/rails/ActionController/AbstractRequest/request_uri
提供的其他答案在控制器或視圖中工作,但不能在例如:消息傳遞作業中提供主機名。 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.