2011-12-08 47 views
2

我有一个设置,我有一个引擎(非名称空间)for each subdomain。这很有用,因为每个子域都可以指定自己的自定义路由,控制器,视图和模型。但我一直无法弄清楚如何让资产做我想做的事情。理想情况下,如果访问该子域,则只会为特定的子域加载JavaScript和样式表。我不希望一个样式表定义覆盖另一个社区中的另一个样式表定义。Rails 3.1子域特定资产

此外,当使用image_tag时,我希望图像可以正常访问。

回答

2

我已经想出了一个解决方案。 JS,CSS和图像应该全部存储在引擎的默认位置,例如, app/assets/javascripts/<subdomain>/application.js。然后,在主应用程序的application.html.erb JS和CSS应该包括像这样:

<%= stylesheet_link_tag "#{community.subdomain}/application" %> 
<%= javascript_include_tag "#{community.subdomain}/application" %> 

至于图像,只要他们是在发动机的app/assets/images/<subdomain>/,他们会在公共显示为/assets/images/<subdomain>/my_image.png。再次,我使用Rails 3.1;我不确定这种行为对于其他版本的Rails(包括3.0)如何。

+0

刚刚遇到了这个,并且在最新的3.2.11发布中表现出色。谢谢! – battlemidget