gpt4 book ai didi

ruby-on-rails - Assets 管道的主题支持

转载 作者:数据小太阳 更新时间:2023-10-29 07:39:46 26 4
gpt4 key购买 nike

我有以下项目结构:

/app
/config
/db
...
/themes
/default
/assets
/images
/stylesheets
/...
/views
/...
/theme1
/assets
/...
/views
/...

默认情况下应使用“默认”主题 :)。 'theme1' - 应覆盖任何内容,例如 logo.png 或 View (application.erb)。

它应该以这种方式工作:如果不存在,请尝试从“theme1”获取 Assets - 从“default”使用。

View 非常简单:

self.prepend_view_path ::ActionView::FileSystemResolver.new(theme_view_path_for(name))
self.prepend_view_path ::ActionView::FileSystemResolver.new(default_theme_path)

但我无法用 Assets 解决它。

config.assets.paths << "#{Rails.root}/themes/default/assets/stylesheets"
config.assets.paths << "#{Rails.root}/themes/default/assets/images"
config.assets.paths << "#{Rails.root}/themes/default/assets/javascript"

这会像往常一样添加 Assets ,例如 Assets 可以通过 url 'assets/logo.png' 访问,但我需要一个前缀 - “assets/theme1/logo.png”。此外,如果“theme1”没有通过“assets/theme1/logo.png”覆盖 logo.png,则应返回“默认”主题 Logo 。 (与上面的 View 类似)。

我已经尝试过 themes_for_rails - 但它不适合,因为它们会覆盖整个 Assets 结构(自己的服务 Controller 等)。

此外,如果能够 hook 到 assets resolve 就好了,例如,当访问 logo1.png 时,应该可以使用我的 Controller 提供它并从数据库返回它。

感谢您的任何建议,我会在完成后与您分享结果。

基里尔萨利金

最佳答案

默认情况下,第一级文件夹将被 Sprocket in rails 忽略。您可以在默认应用程序中验证这一点,您会在其中看到编译后的文件缺少初始的 javascripts/images/或 stylesheets/文件夹。

对你来说更好的结构是:

/themes
/stylesheets
/default
/theme1
/images
/default
/theme1

然后添加目录如下:

config.assets.paths << "#{Rails.root}/stylesheets"
config.assets.paths << "#{Rails.root}/images"

想要引用主题中的文件?

= image_tag("#{theme_name}/background.png")
= stylesheet_tag("#{theme_name}/application.css")

这应该有效。

关于ruby-on-rails - Assets 管道的主题支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13191779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com