解析JSON响应时保留特殊字符

时间:2014-05-01 15:11:21

标签: html ruby-on-rails ruby facebook-graph-api

我使用facebook api

从散列中检索此键/值
"message":"Next Practice:\n\nDate: 04.05.2014\nTime: 10:00-12:00\nVenue: Llandaff Fields\n\nAll welcome

但是当我将它保存到我的模型时,我似乎失去了所有特殊字符,即\ n。有没有办法保存返回的值,以便我可以使用.html_safe输出到我的视图时使用\ n

这就是我检索数据的方式

def get_feed
  fb_access_token = access_token
  uri = URI(URI.escape "https://graph.facebook.com/#{VANDALS_ID}/posts/?#{fb_access_token}")
  response = HTTParty.get(uri)
  results = JSON.parse(response.body)
  formatted_data(results)  
end

我需要做的任何事情,以保持该字符串\ n留在其中

由于

1 个答案:

答案 0 :(得分:1)

当我运行以下代码时:

raw_json = '{"message":"Next Practice:\n\nDate: 04.05.2014\nTime: 10:00-12:00\nVenue: Llandaff Fields\n\nAll welcome"}'
parsed_json = JSON.parse(raw_json)
puts parsed_json['message']
# => Next Practice:

# => Date: 04.05.2014
# => Time: 10:00-12:00
# => Venue: Llandaff Fields

# => All welcome

因此\n被保留(它被解析,并显示为真正的新行)。我也不相信将它保存到您的模型中会抹掉新的线条。

我认为你的真正的问题在于HTML新行(\n)根本不会呈现为新行,而是呈现为空格。要将它们渲染为新行,您需要将它们替换为中断(<br>)。

因此,您可以尝试在ERB上使用以下内容:

<div class=message><%= feed.message.gsub("\n", "<br>").html_safe %></div>

现在,您的新行将在页面上呈现。