【问题标题】:Printing string inside nested hash - Ruby在嵌套哈希中打印字符串 - Ruby
【发布时间】:2018-11-27 13:57:48
【问题描述】:

我一直在尝试为我选择的一个 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 %>

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 如果你不打算使用哈希键,你可以使用each_value
    • 这假设您知道每个导演归因于他们的详细信息(职位、电子邮件等),在我的情况下我知道。这是解决我的问题的一个超级优雅的解决方案,我非常感谢快速响应!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 2019-02-21
    • 2019-08-08
    相关资源
    最近更新 更多