【发布时间】:2021-07-09 11:48:30
【问题描述】:
在我的应用程序中,用户可以更改横幅的背景图像。他们使用 Simple Form 和 Active Storage 上传文件。它工作正常,但我们有一个用户试图上传文件名banner-website.png (2).png。该文件已上传并保存,但不显示为背景图像。我猜这是因为文件名中的特殊字符造成的。
有什么建议可以避免这种情况?我们需要清理文件名吗?
【问题讨论】:
-
您使用什么代码将图像置于背景中?生成的 HTML 和 CSS 是什么样的?
-
我用来显示图像的代码是
style="background-image: url(<%= rails_blob_url(@theme.background_image);" %>)。
在 HTML 中,它看起来像这样:<div class="card border-top-0 border-left-0 border-right-0 border-bottom rounded-0 mb-2" style="background-image: url(http-marble2-lvh-me-3000-rails-active_storage-blobs-redirect-eyjfcmfpbhmionsibwvzc2fnzsi6ikjbahbidz09iiwizxhwijpudwxslcjwdxiioijibg9ix2lkin19-56310f5c9cba27c1d79e1cfa079c6c669baca78b-banner-website-png-20-2-png);。在 CSS 中,它与背景图像显示相同的 URL。 -
看起来它正在清理或参数化所有 URL,对吧? (http-marble2-...) 但是我没有添加任何方法来做到这一点...我看到在我的 Gemfile.lock 我有`rails-html-sanitizer (1.3.0)`。我不知道它是否改变了什么。
标签: ruby-on-rails ruby rails-activestorage