来自rails的多行的JSON响应未正确解析

时间:2015-07-29 14:40:21

标签: javascript jquery ruby-on-rails json

我在rails中有一个简单的应用程序,它应该用这个show.js.erb响应json,

 { "opening": "<%= @frame.opening %>", "closing": "<%= @frame.closing %>"}

问题是,当@ frame.opening是多行时,jquery不会将其解析为对象(而不是字符串),

错误是

  

“parsererror”SyntaxError:意外的令牌

请注意,如果我在@ frame.opening的文本中使用\ n将没有问题,只有当我在字符串中使用enter键时它才会中断。 如果需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

不要手动编码JSON!这很难做到(正如你注意到的那样),而且,让Rails为你做这件事要简单得多。试试这个:

{ opening: @frame.opening, closing: @frame.closing }.to_json

to_json会吐出一个格式正确的JSON字符串供您使用,处理换行符等。例如:

pry(main)> hash = { foo: "asdfasdf
pry(main)*
pry(main)* asdfsf" }
pry(main)> puts hash.to_json
{"foo":"asdfasdf\n\nasdfsf"}

OP编辑:由于我假设会遇到更多人,因此我不得不添加.html_safe,因为ERB正在添加内容以使其适用于HTML,但它是一个JSON。

我不应该为此使用视图,但无论如何,它应该看起来像这样,

 <%= {}.to_json.html_safe %>