获得sinatra的绝对(基础)url
现在,我做了
get '/' do set :base_url, "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}" # ... haml :index end
能够在HAML index.haml中使用options.base_url。 但我相信有更好的,干的,这样做的方式。 然而,我看不到,也找不到它。 (我是Sinatra的新手:))
不知何故,在get之外,我没有request.env可用,或者看起来如此。 因此将它放入包含中并不起作用。
你如何得到你的基本url?
一些事情。
-
set
是一个类级方法,这意味着您要使用每个请求修改整个应用程序的状态 - 以上是一个问题,因为可能的话,基本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_url
得到它= D(看看rack / request.rb )