如何迭代嵌套的YML文件而不必指定节点名称?

时间:2018-05-27 16:50:21

标签: ruby-on-rails yaml

在我的Rails应用程序中,我将此YAML文件用于本地化目的:

en:

  benefits:

    b01:
      heading: "Vestibulum viverra"
      text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit."

    b02:
      heading: "Nulla sed mollis massa"
      text: "Suspendisse potenti. Vestibulum viverra, lorem ac tincidunt tempor, elit eros ornare nisl."

    b03:
      heading: "Lorem ipsum dolor"
      text: "Nulla sed mollis massa, in efficitur est. Nunc ex risus, rutrum ut mi non, mollis pulvinar nisl."

在我看来,我做了这样的事情:

<% (1..3).each do |n| %>
    <% number = sprintf('%02d', n) %>
    <h2><%= raw t("benefits.b#{number}.heading") %></h2>
    <p><%= raw t("benefits.b#{number}.text") %></p>
<% end %>

有没有办法在each循环中指定最后一个YAML节点(&#34; 3&#34;)的数量来实现同样的目的?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

作为哈希对象,您可以访问每个值以及标题和文本键:

WHERE

答案 1 :(得分:1)

你不需要数字或索引,只需迭代键,这是一个例子:

<% I18n.t('benefits').keys.each do |k| %>
  <%= I18n.t("benefits.#{k}.heading") %>
  <%= I18n.t("benefits.#{k}.text") %>
<% end %>

因为I18n.t("benefits")返回哈希,我们可以在其上使用keys方法。 无论文件中有多少个键。