Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 on rails 在某些情况下,rails控制台中的字符串以带反斜杠的return开头_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 在某些情况下,rails控制台中的字符串以带反斜杠的return开头

Ruby on rails 在某些情况下,rails控制台中的字符串以带反斜杠的return开头,ruby-on-rails,ruby,Ruby On Rails,Ruby,在rails 4.2.7的控制台中,我进行了以下测试: [45] pry(main)> '#$' => "\#$" [46] pry(main)> '#@' => "\#@" [47] pry(main)> '#!' => "#!" [48] pry(main)> '#ab' => "#ab" 似乎只有当后面有@或$时,rails才会将\放在字符串前面 导致我进行此测试的问题是,我有一个erb文件,该文件使用json数组呈现数据属性: data-

在rails 4.2.7的控制台中,我进行了以下测试:

[45] pry(main)> '#$'
=> "\#$"
[46] pry(main)> '#@'
=> "\#@"
[47] pry(main)> '#!'
=> "#!"
[48] pry(main)> '#ab'
=> "#ab"
似乎只有当后面有@或$时,rails才会将\放在字符串前面

导致我进行此测试的问题是,我有一个erb文件,该文件使用json数组呈现数据属性:

data-xx="<%= [{xx: '#$', yy: 'yy'}.to_json, {zz: 'zzz'}.to_json] %>"
当我改变xx值时!或其他字符串,则结果将作为数组显示

$("#entry_show_modal_template").data('xx')
["{"xx":"#!","yy":"yy"}", "{"zz":"zzz"}"]
有人知道这是不是真的,为什么会有这样的区别吗? 有什么办法解决这个问题吗?

这不是真的

在{…}中,哈希也将被转义。这样做是为了防止递归/隐式字符串插值

看:

ruby已经为您解决了这个问题。只需按原样使用生成的字符串,不要被控制台中打印出来的方式所愚弄


@mudasobwa的解释是正确的

根据你的情况,你应该这样做

=>在rails控制台中

 json_values = [{xx: '#$', yy: 'yy'}, {zz: 'zzz'}].to_json
=>在chrome控制台中

 result = JSON.parse(json_values)

在ruby控制台aa=[{xx:'$',yy:'yy'},{zz:'zzz'}]中,您将得到预期的数组,它只是处理字符串插值的ruby技术。在chrome控制台json.parseaa中,您将得到预期的数组,它只是处理字符串插值的ruby方法tanks@WishZone。你是对的。只要把json放到数组中就可以解决这个问题。太好了!!刚刚添加了答案,请将其标记为已解决“将json放入数组将解决问题”-错误。没有问题,因此to_json无法解决任何问题。@mudasobwa是的,没有这样的问题,但他正在尝试获得预期的结果,他将以这种方式获得,您的解释是正确的
"\#$".length
#⇒ 2
"\#$" == '#$'
#⇒ true
"\#$"[0]
#⇒ "#"
 json_values = [{xx: '#$', yy: 'yy'}, {zz: 'zzz'}].to_json
 result = JSON.parse(json_values)