在我的应用程序中,用户上传了一张图片,然后我将其放在 S3 上。该图像稍后用作 div 的背景,使用以下样式
div#id { background: url('<%= creative.url %>') no-repeat;}
创意网址类似于:
http://myhost.s3-website-us-east-1.amazonaws.com/27/display/608-(rec'd_021014)_user_image.jpg?1392767029
如上所述,问题在于 creative.url 可以包含特殊字符(引号、括号等),并且根据 http://www.w3.org/TR/CSS2/syndata.html#value-def-uri , 它需要被转义。
我希望有一些方便的 ruby/rails 函数可以帮我解决这个问题。
如果没有,那么我可能需要进行某种正则表达式替换 - 那会是什么样子?
更新:
人们建议使用 URI 编码函数 - 我试过了,但是 url 字符串直接在 ERB 模板中使用,所以它会编码整个东西,这在 css url 函数中不起作用 - 即,我会类似(从上面):
div#id {background: url('http%3A%2F%2Fmyhost.s3-website-us-east-1.amazonaws.com%2F27%2Fdisplay%2F608-(rec%27d_021014)_user_image. jpg%3F1392767029') 不重复;}
最佳答案
推荐的方法是使用 ERB::Util 中的 url_encode
在 Rails 中,有一个 alias u
用于 url_encode。
div#id { background: url('<%=u creative.url %>') no-repeat;}
关于css - Ruby/Rails - 在 css 中使用转义 uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868287/