我在通常的地方放置了一些默认的后备图像:app/assets/images
。
我使用Refile后备选项来引用它们:
<%= attachment_image_tag(current_user.avatars.first, :file, :fill, 18, 18, class: 'img-responsive, img-circle', fallback: asset_path('avatar_18') %>
。
我还尝试了fallback: 'avatar_18'
和fallback: ActionController::Base.helpers.asset_path('avatar_18'))
。
但Heroku上的图像链接已损坏。我可以看到资产正在预编译,其他图像文件也可以正常工作。
我检查了元素,路径看起来是错误的:<img class="attachment file img-responsive, img-circle fallback" src="/avatar_18" alt="Avatar 18">
。
但据推测,路径应该类似于以下(有效):<img src="/assets/stripe-connect-b97267f03e002d67bf29c5efef5c5364c771a0c3bde885284ecafc5356ce2ea4.png" alt="Stripe connect b97267f03e002d67bf29c5efef5c5364c771a0c3bde885284ecafc5356ce2ea4">
。
如何获得正确的路径?
编辑:
fallback: image_tag('avatar_18')
不会在开发中生成任何图像。
fallback: image_path('avatar_18')
适用于开发,但不适用于生产;来源是错误的:src="/images/avatar_18"
。这应该是assets
,而不是images
。
fallback: asset_path('avatar_18')
适用于开发,但不适用于生产;来源是错误的:src="/avatar_18"
。缺少路径assets
。此外,摘要缺失。
ls public/assets
显示文件avatar_18-3c7e2d23b8adbdf979eff7152c156b18817f26b4ceae7525dcdded75d523a052.png
。
我还尝试检查asset_path:irb(main):001:0> puts helper.asset_path('avatar_18.png')
/assets/avatar_18-3c7e2d23b8adbdf979eff7152c156b18817f26b4ceae7525dcdded75d523a052.png
=> nil
不确定还有什么可以尝试。
答案 0 :(得分:0)
解决方案是添加文件扩展名。不需要帮助者。
示例:
<%= attachment_image_tag(current_user.avatars.first, :file, :fill, 18, 18, class: 'img-responsive, img-circle', fallback: 'avatar_18.png' %>.