Ruby / Rails – 转义uri用于css

在我的应用程序中,用户上传一个图像,然后我将其放在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可以包含特殊字符(引号,parens等),并且根据http://www.w3.org/TR/CSS2/syndata.html#value-def-uri,它需要被转义.

我希望有一些方便的ruby / rails功能可以解决这个问题.

如果没有,那么我可能需要做一些正则表达式替换 – 那会是什么样子?

更新:

人们建议使用URI编码函数 – 我确实尝试过,但url字符串直接在ERB模板中使用,所以它会编码整个事情,这在css url函数中不起作用 – 即,我会喜欢(从上面):

div#id {background:url(‘http://myhost.s3-website-us-east-1.amazonaws.com/27/display/608-(rec’d_021014)_user_image.jpg?1392767029’)no-repeat ;}

解决方法

推荐的方法是使用 ERB::Util的url_encode

在Rails中,url_encode有一个alias u.

div#id { background: url('<%=u creative.url %>') no-repeat;}

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...