Javascript 使用单引号转义(撇号)将活动记录对象解析为json

Javascript 使用单引号转义(撇号)将活动记录对象解析为json,javascript,ruby-on-rails,json,Javascript,Ruby On Rails,Json,我试图解析rails活动记录与json的关系 jQuery('.user_form').data('mydata', '<%= raw User.all.to_json %>'); var myPersonalData = JSON.parse(jQuery('.user_form').data('mydata')); 问题在于用户名列中的值包含“'”(撇号),它会打断单引号和双引号的链,因此在从javascript解析时会抛出错误 SyntaxError: missing ) a

我试图解析rails活动记录与json的关系

jQuery('.user_form').data('mydata', '<%= raw User.all.to_json %>');
var myPersonalData = JSON.parse(jQuery('.user_form').data('mydata'));
问题在于用户名列中的值包含“'”(撇号),它会打断单引号和双引号的链,因此在从javascript解析时会抛出错误

SyntaxError: missing ) after argument list path/to/file:linenumber
这方面的问题在于“” 它被转换成

' "object_attribut\": \" value_with'apostrophe" '
因此,'之后的部分被转义


感谢您的帮助。提前感谢。

您应该使用
ActionView::Helpers::JavaScriptHelper
中提供的
escape\u javascript
功能

您可以阅读有关它的内容,但最基本的是它逃避了JavaScript段的回车和单引号和双引号

所以,你最终会得到的是:

jQuery('.user_form').data('mydata', '<%= raw escape_javascript(User.all.to_json) %>');
jQuery('.user_form').data('mydata','');

通常,每当我们在ruby中将哈希转换为json时,它都会试图通过产生解析错误来转义引号。解决这一问题的一种方法是打印散列并调用to_json方法

<%= (puts User.all).to_json %>


点击阅读更多信息。

你可以用这个来代替a,
@Sahil,为什么我们需要
来a
这里,根据问题,我想我们需要将
json
发送到
javascript
。很抱歉,它提供了2D数组。没问题。ERB也有一些快捷方式:您也可以改为写:
'
。额外的等号是
raw
的快捷方式,
j
escape\u javascript
<%= (puts User.all).to_json %>