{"zip"=>"60628", "state"=>"IL", "city"=>"chicago", "street"=>"123 Main -6ren">
gpt4 book ai didi

ruby - 从 Ruby 中的哈希数组中获取值

转载 作者:太空宇宙 更新时间:2023-11-03 18:09:51 25 4
gpt4 key购买 nike

我有一个数组:

address => [{"data"=>{"zip"=>"60628", "state"=>"IL", "city"=>"chicago", "street"=>"123 Main St. Apt 2"}, "primary"=>true}]

我想在我的 View 中以正确的格式显示每件作品,例如:

123 Main St. Apt 2
Chicago, IL 60628

我无法正确显示这一点的逻辑。

这个逻辑应该去哪里,作为我的模型中的方法还是实际 View 中的方法?

我试过:

<% @applicant.address.map{|x| x[:data]}.each do |address| %>
<%= address.street %><br><%= address.city %>, <%= address.state %> <%= address.zip %> <br>
<% end %>

但是得到了:

=> [{"zip"=>"60628", "state"=>"IL", "city"=>"chicago", "street"=>"123 main st Apt 2"}]

最佳答案

map 为您提供了一个新数组,如果您使用散列,则需要使用散列[:key] 或散列["key"] 运算符访问值,试试这个:

<% @applicant.address.each do |address_hash| %>
<% address = address_hash["data"] %>
<%= address["street"] %><br><%= address["city"] %>, <%= address["state"] %> <%= address["zip"] %> <br>
<% end %>

但如果我是你,我会把数据放在一个结构数组中,这样可读性更好。

在您的模型或助手中:

address = Struct.new(:street, :city, :state, :zip)
address.street = ..
...
@addresses << address
etc

在你看来:

<% @addresses.each do |address| %>
<%= address.street %><br><%= address.city %>, <%= address.state %> <%= address.zip %> <br>
<% end %>

关于ruby - 从 Ruby 中的哈希数组中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36607766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com