2013-02-01 190 views
2

这是我的params散列。我只想获得每个姓名和email_id,并且想要对这些进一步处理。请告诉我如何得到这个。自从我刚接触rails以来帮助我。访问嵌套属性

{ 
    "utf8"=>"✓", 
    "_method"=>"put", 
    "authenticity_token"=>"VBJ7NrYDzftlVMYdfNewxADAEGWE8ctau4Zpx3JcjbQ=", 
    "game_school"=>{ 
      "game_school_invites_attributes"=>{ 
       "name"=>"AAA", 
       "email"=>"[email protected]", 
       "1359712354138"=>{ 
        "name"=>"ABCD", 
        "email"=>"[email protected]" 
       }, 
       "1359712366842"=>{ 
        "name"=>"CC", 
        "email"=>"[email protected]" 
       } 
      } 
    }, 
    "commit"=>"invite", 
    "model1_id"=>"5", 
    "model2_id"=>"4" 
} 
+1

做的一种方式似乎是在你的哈希一些问题。在'game_school_invites_attributes'中,您有**名称** **电子邮件**和** 13597112354138 **等。它应遵循相同的结构。 **名称**和**电子邮件**应嵌套在另一个索引下,如另一种情况。也许你可以在这里显示你的视图代码来解析结构。 –

回答

1

这里是一个使用递归函数

def return_name_and_email(hash) 
    if hash['name'] && hash['email'] 
    puts "Name: #{hash['name']}" 
    puts "Email: #{hash['email']}" 
    end 

    hash.keys.each do |key| 
    return_name_and_email(hash[key]) if hash[key].is_a?(Hash) 
    end 
end 

return_name_and_email params