Middleman Frontmatter YAML列表

时间:2017-09-06 16:27:35

标签: ruby yaml middleman

我只想在我的中间人助手中制作一个简单的每个循环,数据存储在我的页面中,像这样的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帮助程序&#39;方法时,它会在两行中显示两个字符串,因此在两个单独的字符串中。不要理解为什么它在我的浏览器上显示为阵列。

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

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

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

2 个答案:

答案 0 :(得分:1)

因为你的助手正在返回一个数组而不是像ERB模板那样的插值字符串。请为您的帮助者尝试以下操作:

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

答案 1 :(得分:0)

我的坏。使用.map代替.each修复问题,然后使用.join使数组成为一个大字符串。