Ruby on rails 从散列调用块分配

Ruby on rails 从散列调用块分配,ruby-on-rails,Ruby On Rails,使用Rails 4.2。我有以下资料: place_details = { name: "abc", address_components: [ { long_name: "Nevada", short_name: "NV", types: ["administrative_area_level_1", "political"] }, { long_name: "United States", short_name: "US", types: ["country", "

使用Rails 4.2。我有以下资料:

place_details = {
  name: "abc",
  address_components: [
    { long_name: "Nevada", short_name: "NV", types: ["administrative_area_level_1", "political"] }, 
    { long_name: "United States", short_name: "US", types: ["country", "political"] }
  ]
}

place.tap do |pl|
  pl.name = place_details.dig(:name)
  place_details.dig(:address_components).each do |component|
    pl.component.dig(:types).first = component[:long_name]
  end
end
预期:

place.tap do |pl|
  pl.name = "abc"
  pl.administrative_area_level_1 = "Nevada"
  pl.country = "United States"
end
pl.component.dig(:types).first=component[:long\u name]
不起作用,原因很明显

我想要的是:

  • 赋值能力
  • 仅在
    类型中取第一名
    行政区级别1
    国家
我使用符号代替:

place.tap do |pl|
  pl[:name] = place_details.dig(:name)
  place_details.dig(:address_components).try(:each) do |component|
    pl[component.dig(:types)[0].to_sym] = component[:long_name]
  end
end
place.tap do |pl|
  pl[:name] = place_details.dig(:name)
  place_details.dig(:address_components).try(:each) do |component|
    pl[component.dig(:types)[0].to_sym] = component[:long_name]
  end
end