如何在视图中设置JSON Feed的样式?

时间:2011-01-12 01:13:06

标签: ruby-on-rails json

我的rails应用从JSON获取以下mixcloud Feed,并将结果粘贴到我的索引页

在我执行此操作的那一刻,我的Feed的所有内容都显示为未格式化的一大块可怕的文字(没有卷曲的JSON括号)

我只想在视图中显示Feed中的特定值。

feed in question开始,为了简单起见,我只是想用“url”键显示所有值

如果我在这里做错了,我的代码是:

# podcast controller
def index
  # I'm using a class method to get the feed
  @feed = Podcast.feed
end

# podcast model
def self.feed
  feed = JSON.parse(open("http://api.mixcloud.com/alivefrommaryhill/feed").read)
end

# index.html.haml
.feed
  = @feed

我无法弄清楚如何设置结果样式并仅显示Feed中的某些项目。我的做法错了吗?

2 个答案:

答案 0 :(得分:2)

不是直接将json写入您的视图,也许您可​​以编写一个将json转换为html标记的clientide javascript函数。例如,也许使用像这里描述的jquery? Best way to display data via JSON using jQuery

或者,类似地,您仍然可以直接在视图中编写json,但将其作为javascript变量的值写出来,而不是将其写为html。然后你可以编写一个javascript函数,在页面加载后读取和解析javascript变量,将其转换为html,然后插入到DOM中。此方法类似于上面链接中的答案,除了您不必发出ajax请求,您可以简单地处理数据,因为它已经在js var中本地可用。

答案 1 :(得分:2)

我使用HTTPartyHashie宝石完成了类似的工作。

此示例循环显示前10个结果:

#controller
def index
  @result = Hashie::Mash.new HTTParty.get("http://api.mixcloud.com/alivefrommaryhill/feed")
end


#index.html
<% @result.data[0..10].each do |e| %>
  <%= e.url %>
  <br/>
<% end %>

如果您想要“小图片”,那么

<% @result.data[0..10].each do |e| %>
  <%= e.from.pictures.small %>
  <br/>
<% end %>

希望这会有所帮助: - )