您正在编写一个sinatra(或机架)应用程序,并希望能够使用它,无需更改代码,无论是作为独立应用程序还是作为已安装的应用程序。
也就是说,您可以单独运行此应用程序,或者您可以将其作为子应用程序安装在其他应用程序中,方法是在“config.ru”中执行以下操作:
run Rack::URLMap.new("/" => MainApp.new,
"/my_mounted_app" => MountedApp.new)
一切似乎进展顺利,因为您在所有视图中都谨慎使用sinatra's url()
helper,确保无论您的应用是如何安装的,都会生成正确的路径。
但是现在你想在CSS文件中包含一个图像作为背景,你就陷入了两难境地:
url()
辅助方法。这可以确保您的图像路径正确且可移植,但现在您的CSS文件必须在每次请求时由sinatra处理。还有第三种更好的选择吗?使用URLMap安装应用程序的真正问题是 - 是否有另一种实现安装的方法可以避免这些问题?
同样,目标是:
答案 0 :(得分:1)
您可以在CSS中使用相对网址。
由于CSS和图像都位于public
目录下,因此它们之间的相对路径将与整个应用程序的安装位置相同。