我有一个名为“products”的数据库,其中包含一个使用名为data
的hstore的字段。
目前,在我的index.html.haml中,我只是循环浏览产品并将其显示为data
作为哈希:
- @products.each do |product|
=product.data #THIS PRINTS A HASH
%hr
例如,可以打印如下的哈希:
{"Name"=>"Example","type"=>"book", "price"=>"7.99"}
我想创建一个可以保存动态数量的键和值的HTML表,并将它们打印到具有与键对应的值的列中。这是一个图表:
感谢您的帮助!
答案 0 :(得分:5)
希望这可以提供帮助:
<强>条件:强>
代码:
# 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
具有相同数量的键/值对并以相同的顺序存储,则此代码将正确呈现。
<强>条件:强>
代码:
# 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]
随意询问细节,我觉得我刚给你一段代码而没有任何解释......