Как перебрать вложенный файл YML без указания имен узлов? - PullRequest
0 голосов
/ 27 мая 2018

В моем приложении 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 %>

Есть ли способ достичьТо же самое без необходимости указывать номер последнего узла YAML ("3") в цикле each?

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Как хеш-объект, вы можете получить доступ к каждому значению, а также к заголовкам и текстовым клавишам:

<% I18n.t('benefits').each_value do |value| %>
  <%= value[:heading] %><br>
  <%= value[:text] %><br>
<% end %>
0 голосов
/ 27 мая 2018

Вам не нужны цифры или индексы, просто перебирайте ключи, вот пример:

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

Поскольку I18n.t("benefits") возвращает хеш, мы можем использовать keys метод на это.Независимо от того, сколько ключей в файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...