在我的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
方法。 无论文件中有多少个键。