在开发Sinatra应用程序以便在瘦身的情况下运行时,路径非常简单。
现在我在tomcat中通过warged war文件启动了,事情发生了变化。根现在是一个更深层次(/warFileName/
),相对地址是相对于路由/网址,所以如果我有两个路由获取'dostuff'并获得'subdir / dostuff',则获取任何文件(js, css,images)在两者之间是不同的(第一个我可以做'js/blah.js'
并且它将正确地查看public/js
,第二个它将在subdir/js
中查看并失败)。并且,我不能再做一个根斜杠(/js
),因为tomcat按照我之前的说法(/warFileName/subdir/doStuff
)将事情推到了一个深层。
假设我不想将/warFileName/
硬编码到我的所有image / js / css / etc引用中,而我宁愿不让我的路由器将内容传递给haml,如@root = ".."
或{ {1}}取决于我们是否在伪子目录中,是否有一种优雅的方式来处理它?</ p>
答案 0 :(得分:1)
使用Sinatra URL帮助程序是处理此问题的最佳方法。
<%= url '/path' %>
或者,如果你想在URL路径中评估一些Ruby:
<%= url "/path/#{foo}" %>