我在rails中有一个简单的应用程序,它应该用这个show.js.erb响应json,
{ "opening": "<%= @frame.opening %>", "closing": "<%= @frame.closing %>"}
问题是,当@ frame.opening是多行时,jquery不会将其解析为对象(而不是字符串),
错误是
“parsererror”SyntaxError:意外的令牌
请注意,如果我在@ frame.opening的文本中使用\ n将没有问题,只有当我在字符串中使用enter键时它才会中断。 如果需要更多信息,请告诉我。
答案 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 %>