我希望代码从cart api中提取信息并将其存储在带有简单键的哈希中,然后迭代哈希以根据需要为每个项目创建新的html元素。我需要提取的每件商品都包含以下内容:id
,Name
和Price
。
products.each do |product|
@product_card = [
{
:id => "#{product['product_id']}",
:name => "#{product['name']}",
:price => "#{product['price']}"
}
]
我想将信息存储在哈希中,以便我可以像这样迭代信息:
<% @product_card.each do |Need help here, Need help here| %>
<html p><% :id %></html p>
<html p><% :name %></html p>
<html p><% :price %></html p>
我对您提供的任何反馈都抱有希望。
答案 0 :(得分:0)
如果您执行类似
的操作@product_card = {}
products.each do |product|
@product_card[product['name']] = client.call('call' ,session_id ,"product.info#{product['id']}")
end
然后在最后@product_card是散列,其中键是名称,值是这个api返回的任何值,显然是哈希值,所以当你这样做时
<% @product_card.each do |key, data | %>
key
将是api的名称和data
返回值(这些是任意名称)。假设api确实返回了你想要的哈希
<%= data['price'] %>
等等,在每个循环内部
答案 1 :(得分:0)
我建议使用Struct
。增加一些开销,但让你的意图清晰。
ProductCard = Struct.new(:id, :name, :price)
@product_cards = products.map do |product|
ProductCard.new("#{product['product_id']}", "#{product['name']}", "#{product['price']}")
end
这会为您提供一个ProductCards
数组,您可以迭代并调用.id
,.name
,.price
。
替代使用OpenStruct
,不需要声明ProductCard
常量:
@product_cards = products.map do |product|
OpenStruct.new(id: "#{product['product_id']}", name: "#{product['name']}", price: "#{product['price']}")
end