中间人 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 使数组成为一个大字符串。
我只想在我的 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 使数组成为一个大字符串。