使用带有多个资产目录的sprockets / asset管道

时间:2016-02-21 20:16:38

标签: ruby-on-rails asset-pipeline sprockets

我目前正在设计一个应用程序,用户可以在其中选择主题并发布其页面。

为了实现这一目标,我以下列方式组织了我的Ruby on Rails项目:

> app
  > controllers
  > helpers
  > mailers
  > models
  > views
  > assets
    > stylesheets
      - style.scss
    > images
      - image.jpg
    > javascripts
  > themes
    > theme_1
      - layout.html.erb
      > assets
        > stylesheets
          - style.scss
        > images
          - image.jpg
        > javascripts
    > theme_2
    > ....

在/app/themes/theme_1/layout.html.erb中使用内置帮助程序(例如stylesheet_link_tagimage_tag)时,我希望这些帮助程序使用位于其自己目录中的资产。

例如,在/app/themes/theme_1/layout.html.erb中使用以下代码时:

<%= image_tag('image.jpg') %> 

我想要显示位于/app/themes/theme_1/assets/images/image.jpg的图片,而不是位于/app/views/assets/images/image.jpg的图片。使用stylesheet_link_tag和style.scss。

也是如此

所以基本上,我想知道是否有 - 例如 - 一种定义目录的方法,其中内置帮助器如stylesheet_link_tagimage_tag将会看起来,因为此时我链接到与位于不同文件夹中的其他资产共享文件名的资产时会出现冲突。

非常感谢帮助,我也非常欢迎其他想法。

1 个答案:

答案 0 :(得分:0)

  

我想要显示位于/app/themes/theme_1/assets/images/image.jpg的图片,而不是位于/app/views/assets/images/image.jpg的图片。

我认为更常规的做法是在名为app/assets/images的{​​{1}}内制作文件夹,然后将主题图片放在那里。

现在您可以像这样使用themes/theme_1

image_tag