在Sinatra获得绝对(基本)url

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

现在,我做了一个

get '/' do
  set :base_url, "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}"
  # ...
  haml :index
end

能够在HAML index.haml中使用options.base_url。但我确信有一个更好的这样做的方式。但我找不到它。

你如何获得你的基网址?

提问于
用户回答回答于

  1. set 是一个类级别的方法,这意味着你正在修改整个应用程序的状态与每个请求
  2. 基础url可能会在不同的请求上有所不同,例如http://foo.com和/ https://foo.com或如果您有多个域使用DNS指向同一个应用服务器

一个更好的策略是定义一个:

helpers do
  def base_url
    @base_url ||= "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}"
  end
end

如果你在响应查询之外需要基础url(而不是在get / post / put / delete块或视图中),最好在某处手动设置它。

用户回答回答于

你可以使用request.base_urltoo = D 来获取它

扫码关注云+社区