gpt4 book ai didi

javascript - 如何在 erb 中安全地呈现 URI

转载 作者:行者123 更新时间:2023-11-30 10:13:39 25 4
gpt4 key购买 nike

我尝试了各种转义和非转义选项,但不明白为什么我的 erb 无法正确呈现。

我有以下格式的标准图片 url:

 https://i.ytimg.com/vi/pB-5XG-DbAA/hqdefault.jpg;

输入我的 Controller 如下:

@whats_hot_last_vid = @whats_hot_last.video.picture

当我尝试在我的 js.erb 文件中呈现它时:

var lastsongImg = <%= @whats_hot_last_vid %>;

这是它的呈现方式:

var lastsongImg = https://i.ytimg.com/vi/pB-5XG-DbAA/hqdefault.jpg;

据我所知,它将 http 地址中的“//”呈现为 JS 注释的开头,导致引发各种错误,如

Uncaught SyntaxError: Unexpected token :

有什么想法吗?

最佳答案

在 erb 的 js block 中处理此类变量的最佳方法是使用 .to_json。这适用于字符串、数组和散列(它将转换为 json 对象)。基本上它会做“正确的事情”,您无需担心根据对象的类型在其周围包装额外的格式。

//string
var lastsongImg = <%= @whats_hot_last_vid.to_json %>;
// => var lastsongImg = "https://i.ytimg.com/vi/pB-5XG-DbAA/hqdefault.jpg";

//arrays
<% myArray = [1, "abc", 1.6] %>;
var myArrayJs = <%= myArray.to_json %>;
// => var myArrayJs = [1, "abc", 1.6];

//hashes
<% myHash = {:foo => "bar", :chunky => "bacon"} %>;
var myObject = <%= myHash.to_json %>;
// => var myObject = {"chunky":"bacon","foo":"bar"};

编辑:作为旁注,ActiveRecord 对象也有 to_js 方法,并生成如下对象:

{"car":{"id":123 "color":"red", "make":"Ford", "model": "Mondeo"}}

如果需要,您当然可以为特定型号覆盖它。

关于javascript - 如何在 erb 中安全地呈现 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25119461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com