css - Ruby/Rails - 在 css 中使用转义 uri

标签 css ruby-on-rails ruby

在我的应用程序中,用户上传了一张图片,然后我将其放在 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/

相关文章:

css - Div 在 IE 兼容模式下移动

css - 字体粗细不能正常工作?

ruby-on-rails - rake Assets :precompile aborting, 无法推送到 heroku

ruby - 如何改善 jRuby 加载时间?

ruby-on-rails - 用 ruby 显示日期

jquery - 虚拟键盘隐藏字段/文本区域/contenteditable(隐藏在键盘下方)

css - 这两个使用 “:not” 的选择器有什么区别?

ruby-on-rails - 如何检查值是否包含在 ActiveRecord 验证的散列中?

jquery - 浏览器上一个按钮和模式窗口

ruby - 如何确认散列中的所有元素都已定义?