在控制器中检测基地 url?
Detect base url in controller?
我们如何检测控制器中的根/基url?
我是一个 运行 函数,需要知道 return 用户在完成后去哪里,我希望它在开发和生产环境中工作。目前,如果我简单地使用域名,那么在开发过程中它会将用户 return 发送到实际网站(即 www.example.com/reauth,而不是 http://localhost:3000),这是不可取的(在 dev 中,用户应该returned 到 dev;他们不应该 链接到网站的生产版本。
所以我想要 returns:
的代码
https://www.example.com
在生产中
http://localhost:3000
开发中
例子
这是具体示例的简化版本,我需要将 refresh_url
的值设置为:
https://www.example.com/reauth
在生产中
localhost:3000/reauth
开发中
注意这里的关键是 url 的后半部分是相同的,但第一部分 (base url) 是生产中的实际域,以及开发中的 localhost。
Stripe::AccountLink.create({
refresh_url: 'https://www.example.com/reauth'
})
到目前为止我所知道的
我看过:
- how to detect the base url in the model (and in the view),以及
- how to get the base url(其中 returns
NameError: undefined local variable or method 'request' for main:Object
)
我发现 method here 有效。
即
request.base_url
备注:
- 这将 return url 没有尾部正斜杠。
- 这在 rails 控制台中不起作用
为了将来参考,这里是我根据应用程序是 运行 开发还是生产来给出正确基础 url 的解决方案:
base_url = (!Rails.const_defined? 'Console') ? (request.base_url) : "http://localhost:3000"
我们如何检测控制器中的根/基url?
我是一个 运行 函数,需要知道 return 用户在完成后去哪里,我希望它在开发和生产环境中工作。目前,如果我简单地使用域名,那么在开发过程中它会将用户 return 发送到实际网站(即 www.example.com/reauth,而不是 http://localhost:3000),这是不可取的(在 dev 中,用户应该returned 到 dev;他们不应该 链接到网站的生产版本。
所以我想要 returns:
的代码https://www.example.com
在生产中http://localhost:3000
开发中
例子
这是具体示例的简化版本,我需要将 refresh_url
的值设置为:
https://www.example.com/reauth
在生产中localhost:3000/reauth
开发中
注意这里的关键是 url 的后半部分是相同的,但第一部分 (base url) 是生产中的实际域,以及开发中的 localhost。
Stripe::AccountLink.create({
refresh_url: 'https://www.example.com/reauth'
})
到目前为止我所知道的
我看过:
- how to detect the base url in the model (and in the view),以及
- how to get the base url(其中 returns
NameError: undefined local variable or method 'request' for main:Object
)
我发现 method here 有效。
即
request.base_url
备注:
- 这将 return url 没有尾部正斜杠。
- 这在 rails 控制台中不起作用
为了将来参考,这里是我根据应用程序是 运行 开发还是生产来给出正确基础 url 的解决方案:
base_url = (!Rails.const_defined? 'Console') ? (request.base_url) : "http://localhost:3000"