ruby-on-rails - 使用 Rails Asset Pipeline 渲染 SVG HAML 模板

标签 ruby-on-rails svg sass asset-pipeline haml

我有一个使用 HAML 创建的 SVG 以保持语法清晰。我可以使用 Rails 路由将图像用作 CSS 中的背景图像,但我真的很想将 svg.haml 预编译为 svg 并静态提供它。

有没有一种方法可以将模板化 SVG 添加到 Assets 管道并从 SCSS 中引用它,这样 SVG 就可以像我的其他 Assets 一样被预编译为具有摘要的静态 Assets ?

最佳答案

所以,这是我在 app/assets/images 中的一个 SVG 示例 (seal.svg.haml):

points = 60; interval = 360.0 / points

%svg{xmlns: 'http://www.w3.org/2000/svg', 'xmlns:xlink' => 'http://www.w3.org/1999/xlink', 'xmlns:svg' => 'http://www.w3.org/2000/svg', viewBox: '0 0 200 200'}
  %defs
    %polygon#point{points: '100,0 104,8 96,8'}

  %g{fill: '#333'}
    %circle{cx: 100, cy: 100, r: 88, stroke: '#333', 'stroke-width' => 2, fill: 'transparent'}

    - points.times do |point|
      %use{'xlink:href' => '#point', 'transform' => "rotate(#{interval * point} 100 100)"}

然后,我使用 config/initializers/haml_assets.rb 为 Assets 管道注册了 haml 引擎:

Rails.application.assets.register_engine '.haml', Tilt::HamlTemplate

然后,这工作正常:

.seal {
  background: transparent url(asset_path('seal.svg')) no-repeat center top;
}

关于ruby-on-rails - 使用 Rails Asset Pipeline 渲染 SVG HAML 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25072041/

相关文章:

ruby-on-rails - 如何忽略 Zeitwerk for Rails 6 中的文件夹?

ruby-on-rails - Shrine::错误:存储:缓存未在 FileUploader 上注册

ruby-on-rails - Rails 4 - 如何优化我的 Heroku 生产环境?

javascript - 内联 SVG 到 jvectormap

java - 不带 flash 的 GWT 流程图/树库

css - SASS 中选择器末尾的 & 符号 (&) 和选择器的一部分

ruby-on-rails - ActiveRecord 未更新/保存,但显示该字段已在控制台中修改(db 另有说明)

html - 如何将 svg float 到背景大小为 : contain 的背景图像

sass - Webpack - 从绝对路径导入

html - Zurb Foundation 快速混合