如何在不必指定节点名称的情况下迭代嵌套的 YML 文件?



在我的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 节点("3"(的数量?

感谢您的任何帮助。

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

<% I18n.t('benefits').each_value do |value| %>
<%= value[:heading] %><br>
<%= value[:text] %><br>
<% end %>

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

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

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

最新更新