检测控制器中的基本url



我们如何检测控制器中的根/基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"

相关内容

  • 没有找到相关文章

最新更新