gpt4 book ai didi

ruby - Jekyll:如何将 Ruby 对象传递给模板?

转载 作者:数据小太阳 更新时间:2023-10-29 06:54:20 26 4
gpt4 key购买 nike

例如,假设我想生成这个数组:

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 中动态生成数组。在模板内部,我想要一个可以迭代的数组,我不需要字符串。

这在 Jekyll 中如何完成?

最佳答案

好吧,你需要一个插件: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,也有很多解决方法。

关于ruby - Jekyll:如何将 Ruby 对象传递给模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13076213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com