Ruby on rails 用Rails散列数组转义引号

Ruby on rails 用Rails散列数组转义引号,ruby-on-rails,Ruby On Rails,在rails控制器中,我返回一个散列数组 @people = [ {name: 'mark' ,age: 25}, {name: 'mary' ,age: 18}] 在我的js.erb文件中,我尝试了以下方法: console.log("<%= @people %>"); 我试过: @people.to_json @people.to_json.html_safe raw @people j @people #ActionView::Template::Error (undefi

在rails控制器中,我返回一个散列数组

@people = [ {name: 'mark' ,age: 25}, {name: 'mary' ,age: 18}]
在我的js.erb文件中,我尝试了以下方法:

console.log("<%= @people %>");
我试过:

@people.to_json
@people.to_json.html_safe
raw @people
j @people #ActionView::Template::Error (undefined method `gsub' for #<Array:0x007f17ed682390>):
@people.to_json
@people.to_json.html_safe
生@人
j@people#ActionView::Template::Error(未定义#的方法'gsub'):

但是这些解决方案都不起作用。

一种方法是使用
将ruby数组转换为json。转换为json
:它将生成一个字符串。然后,您可以将该字符串传递给JavaScript,并使用
JSON.parse
将其解析为JavaScript对象

RUBY数组⇢
.to_json
⇢ JSON字符串⇢
JSON.parse
⇢ JAVASCRIPT对象

在您的
.js.erb
文件中类似这样的内容:

var myObj = JSON.parse('<%= people.to_json %>');
console.log(myObj);

/*
 or console.log(JSON.parse('<%= people.to_json %>'));
*/
在JS中:

var obj = JSON.parse("[{\"name\":\"ma'rk\",\"age\":25},{\"name\":\"mary\",\"age\":18}]");
console.log(obj); //[Object, Object]

如果散列包含一个单引号的值,则可能会进一步中断。@31piy我已测试但未中断。但也许我错过了什么
@people = [ {name: 'ma\'rk' ,age: 25}, {name: 'mary' ,age: 18}]

@people.to_json
#=> "[{\"name\":\"ma'rk\",\"age\":25},{\"name\":\"mary\",\"age\":18}]"
var obj = JSON.parse("[{\"name\":\"ma'rk\",\"age\":25},{\"name\":\"mary\",\"age\":18}]");
console.log(obj); //[Object, Object]