我们如何检测控制器中的根/基url?
我正在运行一个函数,该函数需要知道在完成后将用户返回到哪里,我希望它能在dev和prod中工作。目前,如果我只是使用域名,那么在开发过程中,它会将用户返回实际的网站(即www.example.com/reauth,而不是http://localhost:3000),这是不可取的(在dev中,用户应该返回到dev;他们不应该链接到站点的prod版本(。
所以我想要返回的代码:
https://www.example.com
在生产和- 开发中的
http://localhost:3000
示例
下面是一个简化版本的确切示例,我需要将refresh_url
的值设置为:
- CCD_ 4在生产中的应用
- 开发中的
localhost:3000/reauth
注意,这里的关键是url的后一部分是相同的,但第一部分(基本url(是生产中的实际域,而localhost是开发中的域。
Stripe::AccountLink.create({
refresh_url: 'https://www.example.com/reauth'
})
到目前为止我所知道的
我看过:
- 如何检测模型(和视图(中的基本url,以及
- 如何获取基本url(返回
NameError: undefined local variable or method 'request' for main:Object
(
我发现这里的方法有效。
即
request.base_url
注:
- 这将返回不带正斜杠的url
- 这在rails控制台中不起作用
为了将来的参考,以下是我解决的问题,根据应用程序是在dev中运行还是在prod:中运行来给出正确的基本url
base_url = (!Rails.const_defined? 'Console') ? (request.base_url) : "http://localhost:3000"