希望这可以帮助:
解决方案 1:基于相同的 .data 内容 # 已弃用
条件:
- 所有 product.data 都具有相同数量的键/值对。
- 所有产品的配对顺序都相同。
编码:
# headers
%tr
- @products.first.data.keys.each do |attribute_name|
%th= attribute_name
# body
- @products.each do |product|
%tr
- product.data.attributes.each do |attribute_value|
%td= attribute_value
如果每个代码product.data
具有相同数量的键/值对并以相同的顺序存储,则此代码将正确呈现。
解决方案 2:完全动态(.data 变化)# 推荐
条件:
- product.data 的(key/val)对的数量在每个产品之间是不同的
- 所有产品的配对顺序并不相同。
编码:
# we gather all possible attribute's name in the data hash:
- headers = @products.map(&:data).flat_map(&:keys).uniq
%tr
# we make a table-head cell for each attribute's name:
- headers.each do |key|
%th= key
- @products.each do |product|
%tr # for each attribute's name, we display a TD cell and try to display it's value if exists
- headers.each do |key|
%td= product.data[key]
随意询问细节,我感觉我只是给你一段代码,没有任何解释......