ruby - 如何让 config.rb 中的嵌套循环在 Middleman 中工作?
问题描述
我们多年来一直致力于静态 HTML 网站构建器 Middleman。在最近的一次升级之后,我们遇到了一个让我们整个团队都陷入困境的问题。在 config.rb 中,所有proxy
调用都可以正常工作,直到我们尝试像这样运行嵌套循环:
data.site.datatype.each do | id, c |
puts c
data.site.datatype.each do | id, c2 |
puts c2
end
end
[注意 data.site.datatype 是使用 middleman-contentful 导入的 .yaml 文件。]
行为是外部循环运行良好,但内部循环拒绝执行。
外部循环 ( puts c
) 的输出显示了 .yaml 有效负载的中间人导入,如下所示:
#<Middleman::Util::EnhancedHash id="id-1" name="comp1" slug="comp1">
#<Middleman::Util::EnhancedHash id="id-2" name="comp2" slug="comp2">
我们已经在这个问题上停留了一周,所以非常欢迎任何指导!
Gemfile 如下:
source 'https://rubygems.org'
gem 'middleman', '~> 4.2'
gem 'middleman-autoprefixer', '~> 2.7'
gem 'tzinfo-data', platforms: [:mswin, :mingw, :jruby, :x64_mingw]
gem 'wdm', '~> 0.1', platforms: [:mswin, :mingw, :x64_mingw]
gem 'middleman-dotenv', '~> 2.0'
gem 'contentful_middleman', '~> 4.2.0'
否则 config.rm 有activate :dotenv
和activate :contentful
我们已经回到https://middlemanapp.com/advanced/dynamic-pages/并且找不到任何有帮助的东西。
解决方案
更新:虽然我们还没有找到任何真正的文档,但这里是答案。
在 .html.erb 模板中使用data.site
作品时,在 config.rb 中对数据文件的调用需要@app.data.site
.
所以上面的示例代码应该是
@app.data.site.datatype.each do | id, c |
puts c
@app.data.site.datatype.each do | id, c2 |
puts c2
end
end
提示来自 Middleman 回购:
# Make the internal `data_store` method available as `app.data`
expose_to_application data: :data_store
# Exposes `internal_data_store` to templates, to be wrapped by `data` in the context
expose_to_template internal_data_store: :data_store
推荐阅读
- spring-boot - Hibernate Search 和一个复杂的关系
- matlab - 如何为每种可能的组合组合 2 个字符串数组
- python - Tkinter 对象对鼠标指针的敏感性
- vb.net - 每隔 1 秒刷新 TextBox 中的文本
- c++ - 组成员函数都需要先隐式互斥锁?
- javascript - 通过使用 ramda 对所有其他项目进行测试来过滤数组
- r - 在循环中为一系列日期创建列
- git - 从特定分支获取最新标签
- javascript - 如何制作一个函数,该函数采用两组返回等效值的字符串?(Javascript)
- php - 创建几个在循环中重复的独特类 Woocommerce 商店循环