0
如果紅寶石:在陣列中添加到每個陣列一個新的元件,使得該新元素是downcased版本的現有元件的
@users = User.all.group_by(&:iso).map{|k,v| [k, v.count]}
返回
[["GB", 1], ["GI", 3], ["BD", 1]]
爲什麼不能執行此
@users = User.all.group_by(&:iso).map{|k,v| [k, v.count, k.downcase]}
得到
[["GB", 1, "gb"], ["GI", 3, "gi"], ["BD", 1, "bd"]]
我收到錯誤
undefined method `downcase' for nil:NilClass
我如何得到這個。
如果我做
@user_json = User.all.group_by(&:iso).map{|k,v| [k, v.count, k.inspect]}
我得到
[["GB", 1, "\"GB\""], ["GI", 3, "\"GI\""], ["BD", 1, "\"BD\""]
然後
@user_json = User.all.group_by(&:iso).map{|k,v| [k, v.count, k.inspect.downcase]}
[["GB", 1, "\"gb\""], ["GI", 3, "\"gi\""], ["BD", 1, "\"bd\""]
五弄得
更多產品細節 - 這工作(但如果是錯誤的,不能解釋爲什麼)
我想建立一個JSON陣列結構爲:
[{"code":"GB","value":1,"flag":"gb"},{"code":"GI","value":3,"flag":"gi"},{"code":"BD","value":1,"flag":"bd"}]
我的控制器代碼
def global_chart
@user_json = User.all.group_by(&:iso).map{|k,v| [k, v.count, k.to_s.downcase]}.map {|c, v | ["code" => c, "value" => v, "flag" => c.to_s.downcase]}.flatten.to_json
render 'users/charts/global'
end
這工作(在@user_json變量具有正確的架構),但是我做不到解釋上述行爲....
爲什麼你不能?你可以 – fl00r
我得到:未定義的方法'downcase'爲零:NilClass – GhostRider
所以你的'iso'之一是空的。試試這個'User.all.group_by(&:iso).map {| k,v | [k,v。count,k.try(:downcase)]}' – fl00r