首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ruby on Rails显示对象

问使用Ruby on Rails显示对象
EN

Stack Overflow用户
提问于 2012-07-25 01:48:19
回答 2查看 84关注 0票数 1

我有一些JSON,看起来像这样。我将其存储并读取到一个对象@items中。

代码语言:javascript
复制
[
 {
  {
    "id": "A",
    "description": "a_description"
  }, 
  {
    "id": "B",
    "description": "b_description"
  }
 }, 
 {
  {
    "id": "A",
    "description": "a_description"
  }, 
  {
    "id": "B",
    "description": "b_description"
  }
 }
] 

我的目标是显示一个包含两列的表,一列标记为A,另一列标记为B,其中每一行都表示"a_description“和"b_description”。我不知道该怎么做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-25 03:28:22

哈,散列的旧数组和数组的散列问题。

要解决您的“无序”问题,您首先必须转换

代码语言:javascript
复制
{
  "id": "A",
  "description": "foo"
},
{
  "id": "B",
  "description": "bar"
}

进入{"A" : "foo", "B" : "bar" }。

代码语言:javascript
复制
@new_items = @items.map do |item|
  output = {}
  item.each do |hash|
    output.merge!(hash["id"] => hash["description"])
  end
end

然后@new_items变为(故意乱序显示,因为散列元素没有排序)

代码语言:javascript
复制
[
  { 
    "A": "a1_description",
    "B": "b1_description"
  },
  { 
    "B": "b2_description",
    "A": "a2_description"
  }
]

从这里开始,每一行都是一个哈希值,因此您可以根据所在的列取消引用所需的值。

代码语言:javascript
复制
@new_items.each do |item|
  puts "#{item['A']} is paired with #{item['B']}"
end

当然,如果您不想使用.keys对"A“和"B”进行硬编码,则可以动态检索键

票数 2
EN

Stack Overflow用户

发布于 2012-07-25 01:54:32

像这样的东西也许

代码语言:javascript
复制
<tr><th>A</th><th>B</th></tr>
<% @items.each do |item| %>
  <tr><td><%=item[0].description%></td><td><%=item[1].description%></td></tr>
<% end %>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11636451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档