动态显示html表中的哈希数组?
我有一个名为“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表,并将它们打印到具有与键对应的值的列中。 这是一个图表:
谢谢大家的帮助!
希望这可以帮助:
解决方案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的对(密钥/值)对在每个产品之间是不同的
- 对的顺序对于所有产品都不相同。
代码:
# 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]
随意询问细节,我觉得我刚给你一段代码而没有任何解释……