我在一个更大的中间商项目中有几个微站点,每个微站点都有自己的样式表资产,如下所示:
project/
source/
microsite1.com/
stylesheets/
index.haml
microsite2.com/
stylesheets/
index.haml
stylesheets/
index.haml
config.rb现在,在生产中,每个微站点通过一个域根(例如http://microsite1.com/ )访问。但是上面的目录结构是我的what主机管理这些微站点所需要的,所以在开发过程中,最好在http://localhost:4567/microsite1.com/访问这些站点。
但是,资产帮助器输出的路径不是相对的。例如,在microsite1.com/index.haml中
= stylesheet_link_tag "screen"收益率
<link href="/stylesheets/screen.css" media="screen" rel="stylesheet" type="text/css">在:relative_assets未设置的情况下,以及
<link href="../stylesheets/screen.css" media="screen" rel="stylesheet" type="text/css">准备好了。前者的产量在生产情况下是正确的,后者在生产和发展方面都是不正确的。
是否有一种方法可以配置中间商,以便我可以在http://localhost:4567/microsite1.com/上进行测试?或者,有什么方法可以模拟http://microsite1.com/?(我想尝试修改/etc/hosts,但这似乎行不通,因为我没有指向IP地址)
发布于 2013-08-31 23:40:21
下面是我那烦人但实际上相当实用的解决方案:
# microsite1.com/index.haml
- if development? then $asset_base = "/microsite1.com" end
# config.rb
configure :development do
helpers do
alias_method :original_asset_path, :asset_path
def asset_path(*args)
path = original_asset_path(*args)
if not path =~ ABSOLUTE_URL_PATTERN && defined? $asset_base
path = File.join($asset_base, path)
end
path
end
end
end我正在用asset_path链接以保证所有相关资产(样式表、javascripts、图像)都以某些$asset_base路径作为前缀(如果指定的话)。(如果比我更擅长Ruby +中间人的人想建议我如何在没有全局变量的情况下做到这一点,我会全神贯注。)
发布于 2013-08-31 16:52:27
你为什么要触摸css_dir设置呢?您应该能够使用stylesheet_link_tag助手,如下所示..。
<%= stylesheet_link_tag "../microsite1.com/stylesheets/microsite1" %>..。在驻留在source/microsite1.com中的模板中。这应该会给你..。
<link href="/stylesheets/../microsite1.com/stylesheets/microsite1.css" media="screen" rel="stylesheet" type="text/css" />https://stackoverflow.com/questions/18525769
复制相似问题