首先,我来自JS背景,对于Ruby on Rails来说还很陌生,所以这可能是一个愚蠢的问题,但是,如何预加载图像资产(SVG)?这是正在发生的事情...
我有自定义复选框/无线电,它们将不同的SVG用于已检查/未检查状态。用户首次访问我的网站时,单击复选框将其选中,他们将看到快速的“闪烁”。发生这种情况是因为在发生点击之前,不会提取“选中”状态资产。一旦资产被缓存,问题就不再发生。是否有Ruby on Rails方式可将该资产预加载到DOM中?
我曾尝试研究如何通过资产渠道进行此操作,但运气不佳。我还使用了sass-rails
宝石,但是使用asset-path
对我不起作用。这是我的代码的示例。
.custom-checkbox::before {
...
background-image: url(asset_path('check_box_unchecked.svg'));
}
.custom-checkbox::after {
...
background-image: url(asset_path('check_box_checked.svg'));
}
我可以通过在<head/>
标记中执行此操作来防止出现闪烁问题,但是由于我必须将其复制到我的每个布局中,因此感觉很糟糕
<%= image_tag('check_box_checked.svg',style: 'display:none;') %>