中间人 Frontmatter YAML 列表

Middleman Frontmatter YAML list

我只想在我的 Middleman 助手中做一个简单的 each 循环,数据存储在我的页面'Frontmatter 中,如下所示:

dir:
  - test
  - test2

所以在我的助手中,我尝试编写我的循环:

def translate_directory
  current_page.data.dir.each do |dir|
    dir
  end
end

在我的页面调用我的方法

<%= translate_directory %>

这就是显示的内容:

["test", "test2"]

但是现在,如果我在页面中创建相同的循环,请使用 ERB 语法编写:

<% current_page.data.dir.each do |x| %>
  <%= x %>
<% end %>

出口如下

test test2

分成两个字符串,正是我想要的。


编辑: 当我 puts 辅助方法时,它在两行中显示两个字符串,所以在两个分开的字符串中。不明白为什么它在我的浏览器上显示为数组。


EDIT 2 : 忘记了一件小事,我想用 I18n.translate 翻译每个单词,像这样:

def path_translate
  current_page.data.dir.each { |dir| t("paths.#{dir}", locale: lang) }
end

但我不能,因为 each 方法不起作用,所以 I18n 无法翻译每个单词。

因为您的助手返回的是一个数组,而不是像 ERB 模板那样返回的内插字符串。为您的助手尝试以下操作:

def translate_directory
  current_page.data.dir.join(' ')
end

我的错。使用 .map 而不是 .each 解决问题,然后使用 .join 使数组成为一个大字符串。