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

标签 javascript ruby-on-rails url erb

我尝试了各种转义和非转义选项,但不明白为什么我的 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/

相关文章:

javascript - Google Adsense 广告出现然后消失

ruby-on-rails - 有_许多 :through looking for inexistent column

ruby-on-rails - Rails DB 中的 CamelCase 而不是 snake_case

c# - 在文件和目录列表中查找公共(public)父路径

php - 如何从 url 获取 Facebook 页面用户名或 facebook 页面 ID

javascript - 如何访问 bootstrap select onChange 事件中的 optgroup 值

javascript - 如何在移动设备中制作可拖动对象

javascript - 使用不透明度值设置在滚动时淡入和淡出

ruby-on-rails - Rails 3 - 临时文件路径?

url - 在 URL 中,空格应该使用 %20 还是 + 进行编码?