[英]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.