如何让 config.rb 中的嵌套循环在 Middleman 中工作?
How to get nested loops in config.rb to work in Middleman?
我们多年来一直致力于 Middleman,静态 HTML 网站构建器。在最近的升级之后,我们 运行 遇到了一个困扰我们整个团队的问题。在 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/,在那里找不到任何有用的东西。
更新:
虽然我们还没有找到任何关于此的真实文档,但这里是答案。
虽然 data.site
在 .html.erb 模板中有效,但在 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
我们多年来一直致力于 Middleman,静态 HTML 网站构建器。在最近的升级之后,我们 运行 遇到了一个困扰我们整个团队的问题。在 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/,在那里找不到任何有用的东西。
更新:
虽然我们还没有找到任何关于此的真实文档,但这里是答案。
虽然 data.site
在 .html.erb 模板中有效,但在 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