Jekyll:如何将Ruby对象传递给模板?
发布时间:2020-12-16 19:11:54 所属栏目:百科 来源:网络整理
导读:例如,假设我想生成这个数组: random_numbers = []1000.times { random_numbers rand(2) } 并将其传递给模板,以便我可以从Liquid访问它: {% for num in random_numbers %} ... here I'd use logic around the number to generate something.{% endfor %} 注
例如,假设我想生成这个数组:
random_numbers = [] 1000.times { random_numbers << rand(2) } 并将其传递给模板,以便我可以从Liquid访问它: {% for num in random_numbers %} ... here I'd use logic around the number to generate something. {% endfor %} 注意:我想在Ruby中动态生成数组.在模板中,我想要一个我可以迭代的数组,我不想要一个字符串. 怎么能在杰基尔做到这一点? 解决方法
好吧,你需要一个插件:
https://github.com/mojombo/jekyll/wiki/Plugins
如果您乐意将逻辑放在插件中,您可以在自定义Liquid :: Tag中进行,但您的要求听起来像他们需要一个生成器,这没关系.我只是把它扔在一起,它似乎按照你的意愿工作: module Jekyll class RandomNumberGenerator < Generator def generate(site) site.pages.each do |page| a = Array.new 1000.times { a << rand(2) } page.data['random_numbers'] = a end end end end 应该放在你的_plugins /目录中(如rand.rb或其他东西).在您的模板中,您可以这样做 <ul> {% for number in page.random_numbers %} <li>{{ number }}</li> {% endfor %} </ul> 或者不管你喜欢什么.我假设您希望每个页面都有一组不同的数字 – 但是如果您想为整个网站设置一个数字,您可以轻松地生成一次数组,然后将其附加到网站对象或每个页面. 这不适用于Github Pages上的自动生成(由于显而易见的原因,它们不允许自定义插件),但这应该不是问题 – 即使您使用的是Github Pages,也有很多解决方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |