如何根据从数据库中提取的数据加载不同的资产?

时间:2013-11-22 17:20:17

标签: ruby-on-rails ruby asset-pipeline multi-tenant paas

我正在为有潜力上传自己设计(图片/ CSS / JavaScript)的客户提供多租户服务,这让我想知道,为不同客户提供不同资产的合适方式是什么?如何在RoR上实现这样的功能?我已经可以通过使用唯一的登录凭据来区分每个客户的主题。

我已经塞满了Rails的文档,没有任何关于加载不同资产集的相关数据。此外,我搜索了SO / Google,但我找不到任何有用的东西。

如何根据变化的变量动态加载不同的资源(最有可能从数据库中提取结果)。我正在寻找类似的东西:

use_assets(current_tenant.theme_name) #current tenant's theme is loaded(CSS/JS/Images)

2 个答案:

答案 0 :(得分:1)

我通过使用资产管道渲染默认布局,然后使用javascript_include_tag等渲染任何客户特定资产,解决了类似情况。我还完成了将资产渲染为帮助程序的详细信息,以便顶部我的布局看起来像这样

!!!
%html
  %head
    %title Tenantly
    = stylesheet_link_tag :application
    = javascript_include_tag :application

    - if current_tenant && !current_tenant.theme_name.blank?
      = custom_theme current_tenant.theme_name
    ...

这里客户的css可以覆盖基本css,客户的js可以在适当的时候替换标准的js。这应该允许你将主题缩小到只有那些必须被替换的部分。

答案 1 :(得分:-2)

仅基于用户<{p>} set the asset path

config.assets.prefix = "/path_of_user_12345678"

你说你倾注了文档。你没有看到这个?或者由于某种原因它不起作用?