在嵌套哈希中打印字符串 - Ruby

时间:2018-06-18 16:55:56

标签: ruby-on-rails arrays ruby hash nested

我一直在努力学习我选择的Rails项目的ruby绳索。我有C ++经验,但我仍然在学习Ruby,所以我会因为不理解Ruby及其细微差别而道歉。

我有一个散列,其中的元素包含另一个字符串散列...

def directors = {
   gm: { pos: "General Manager", email: "123@abc.com" },
   prod: { pos: "Production Director", email: "456@def.com" },
   support: { pos: "Support Director", email: "789@xyz.com" }
}
end

在html中,我能够运行ruby代码来单独访问和输出每个字符串......

<%= directors[:gm][:pos] %>
<%= directors[:gm][:email] %>
<%= directors[:prod][:pos] %>
<%= directors[:prod][:email] %>
<%= directors[:support][:pos] %>
<%= directors[:support][:email] %>

这是获取和输出每个元素的繁琐且手动的方法。我试图以更简洁的方式和方式编写它,以便它始终显示每个元素,而不管知道每个元素有多少元素。我可以编写directors.each来调用director中的每个元素,但是我需要再次访问每个director元素中的每个元素。这是我能想到的最好的代码,但在语法上不正确。

<% directors.each do |director| %>
   <% "#{director}" do |info| %>
      <%= dirs[:"#{director}"][:"#{info}"] %>
   <% end %>
<% end %>

1 个答案:

答案 0 :(得分:1)

如果您只想显示嵌套哈希,可以这样做:

<% directors.each do |_internal_name, details| %>
  Position: <%= details[:pos] %>
  Email:  <%= details[:email] %>
<% end %>