Last night I spent about three hours fighting and struggling on how to get insert icons from zondicons and add some classes to them. Needless to say just adding an image_pack_tag
was not doing the trick, as I needed something like this
<svg class="my-classes with-style"> <path ...> </svg>
...instead of this
<img src="path/to/icon.svg" class="my-classes" />
So I made a helper for this:
module ApplicationHelper def zondicon(icon_name, options={}) file = File.read(Rails.root.join('app', 'javascript', 'images', 'zondicons', "#{icon_name}.svg")) doc = Nokogiri::HTML::DocumentFragment.parse file svg = doc.at_css 'svg' options.each {|attr, value| svg[attr.to_s] = value} doc.to_html.html_safe end end
And now in my views I can do this:
<button class="btn btn-blue"> <%= zondicon('wrench', class: 'fill-current teal-500') %> <span>Configure</span> </button>
There's also a gem called inline_svg for this very purpose, but I decided to go for a simpler approach with no extra dependencies.
Top comments (1)
Glad you were able to solve the problem. Thanks for sharing this with your fellow devs 😇