参见英文答案 >
How to avoid NoMethodError for missing elements in nested hashes,without repeated nil checks?16个
我相信我以前见过这个优雅的解决方案,但我找不到它: @H_403_3@我有一个rails控制器,可能或者可能没有以下hash元素:
>如果确实存在,myhash [:parent_field] [:child_field]可能存在也可能不存在
>如果存在,则可能是空白,也可能不是空白.
我相信我以前见过这个优雅的解决方案,但我找不到它: @H_403_3@我有一个rails控制器,可能或者可能没有以下hash元素:
myhash[:parent_field]@H_403_3@在该父字段内,子元素也可以为空.我目前通过(非常丑陋的)方法检查:
if (!myhash[:parent_field] || !myhash[:parent_field][:child_field] || myhash[:parent_field][:child_field].blank?)@H_403_3@哪个有效,但我认为 – 当然 – 必须有一个更优雅的方式.只是重申: @H_403_3@> myhash [:parent_field]可能存在也可能不存在
>如果确实存在,myhash [:parent_field] [:child_field]可能存在也可能不存在
>如果存在,则可能是空白,也可能不是空白.
解决方法
#fetch
是你的朋友:
my_hash.fetch(:parent,{})[:child].blank?