我只想在我的中间人助手中制作一个简单的每个循环,数据存储在我的页面中,像这样的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无法翻译每个单词。
答案 0 :(得分:1)
因为你的助手正在返回一个数组而不是像ERB模板那样的插值字符串。请为您的帮助者尝试以下操作:
def translate_directory
current_page.data.dir.join(' ')
end
答案 1 :(得分:0)
我的坏。使用.map代替.each修复问题,然后使用.join使数组成为一个大字符串。