Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby/Rails-用于css的转义uri_Css_Ruby On Rails_Ruby - Fatal编程技术网

Ruby/Rails-用于css的转义uri

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.

在我的应用程序中,用户上传一个图像,然后我将其放在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.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)}')")
看起来不相关