Ruby/Rails-用于css的转义uri
在我的应用程序中,用户上传一个图像,然后我将其放在S3上。然后使用以下样式将该图像用作div的背景Ruby/Rails-用于css的转义uri,css,ruby-on-rails,ruby,Css,Ruby On Rails,Ruby,在我的应用程序中,用户上传一个图像,然后我将其放在S3上。然后使用以下样式将该图像用作div的背景 div#id { background: url('<%= creative.url %>') no-repeat;} div#id{background:url('')不重复;} 创建的url类似于: http://myhost.s3-website-us-east-1.amazonaws.com/27/display/608-(rec'd_021014)_user_image.
div#id { background: url('<%= creative.url %>') no-repeat;}
div#id{background:url('')不重复;}
创建的url类似于:
http://myhost.s3-website-us-east-1.amazonaws.com/27/display/608-(rec'd_021014)_user_image.jpg?1392767029
如上所述,问题在于creative.url可能包含特殊字符(引号、括号等),并且根据需要对其进行转义
我希望有一些方便的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')不重复;
您可以尝试:
URI(url)
或
URI.encode(url)
或
URI.decode(url)
或
URI.parse(url)
视情况而定
您可能需要先加载
要求“uri”
,然后才能加载推荐的方法是使用url\u从
在Rails中,url\u编码有一个u
div#id { background: url('<%=u creative.url %>') no-repeat;}
div#id{background:url('')不重复;}
您可以使用dump
div#id { background: url('<%= creative.url.dump %>') no-repeat;}
div#id{background:url('')不重复;}
我认为Rails没有任何CSS转义助手,但总比没有好,因为它可以转义引号、右括号和反斜杠。不过,可能有一些特殊的CSS字符不会被触摸
您可以在相关元素上设置
data-
属性,然后使用来引用它。这样,您就可以在CSS中使用它,而不必担心它会转义为CSS。我尝试了一个名为jeux')的文件;背景图片:url('nope.jpg
)
唯一有效的是:
def escape_css(字符串)
string.gsub(“'”,“\\\”)
结束
(我尝试了CGI.escape
,URI.escape
,u
,和String#dump
)
完整代码:
.h-32.bg-cover.bg-no-repeat.bg-center(style="background-image: url('#{escape_css category_image_url(category)}')")
看起来不相关