无法使用rails中的column(:)从哈希中读取数据

时间:2016-05-30 12:47:10

标签: ruby-on-rails

  

a = {" item" => {" id" =>" 34567"," name" =>& #34; AAX第1项清单23",   "说明" =>" AAX项目1清单23"," unit_price" =>" 2342",   " item_type" =>"广告资源"," track_qty_on_hand" =>" true",   " qty_on_hand" =>" 50000"," inv_start_date" => {"(3i)" =>" 4","(2i)" =>" 5",   "(1i)" =>" 2016"}}," company_id" =>" 1"," item_type& #34; = GT;"库存&#34 ;,   "量" = GT;" 1232"}

输出:

  

a [' item'] = {" id" =>" 34567"," name" =>&#34 ; AAX第1项清单23",   "说明" =>" AAX项目1清单23"," unit_price" =>" 2342",   " item_type" =>"广告资源"," track_qty_on_hand" =>" true",   " qty_on_hand" =>" 50000"," inv_start_date" => {"(3i)" =>" 4","(2i)" =>" 5",   "(1i)中" = GT;" 2016"}}

     

a [:item] = nil

那么,如何将数据作为[:item]获取。我需要改变什么?

2 个答案:

答案 0 :(得分:1)

'item'是一个字符串。 :item是一个符号。

您可以使用.to_sym方法将字符串转换为符号,这样就可以了:

a['item'.to_sym]

或从头开始将其声明为符号。

a = { :item => {"id"=>"3...

此外,此方法将哈希中的所有键更改为符号: http://api.rubyonrails.org/classes/Hash.html#method-i-symbolize_keys

答案 1 :(得分:0)

您可以使用symbolize_keys更改哈希的符号化键

a = {"item"=>{"id"=>"34567", "name"=>"AAX item 1 Inventory23", "description"=>"AAX item 1 Inventory23", "unit_price"=>"2342", "item_type"=>"Inventory", "track_qty_on_hand"=>"true", "qty_on_hand"=>"50000", "inv_start_date"=>{"(3i)"=>"4", "(2i)"=>"5", "(1i)"=>"2016"}}, "company_id"=>"1", "item_type"=>"Inventory", "amount"=>"1232"}

output =  a.symbolize_keys

结果:

{:item=>{"id"=>"34567", "name"=>"AAX item 1 Inventory23", "description"=>"AAX item 1 Inventory23", "unit_price"=>"2342", "item_type"=>"Inventory", "track_qty_on_hand"=>"true", "qty_on_hand"=>"50000", "inv_start_date"=>{"(3i)"=>"4", "(2i)"=>"5", "(1i)"=>"2016"}}, :company_id=>"1", :item_type=>"Inventory", :amount=>"1232"}