Rails 3.1子域特定的资产

时间:2011-12-08 21:54:34

标签: ruby-on-rails ruby-on-rails-3.1

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

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

1 个答案:

答案 0 :(得分: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。