Ruby 错误:未定义的方法';属性';零级:零级

Ruby 错误:未定义的方法';属性';零级:零级,ruby,arrays,sorting,Ruby,Arrays,Sorting,我试图在Ruby中根据objects的属性对数组进行排序,但我认为这行代码对数组中的nil元素进行操作 @my_array.sort_by {|object| object.attribute} 如何确保在数组中调用的方法不会调用nil元素上的方法?您可以在排序之前使用数组(这将删除nil元素) 另外,这里有一个具体案例的捷径 sorted_arr = @my_array.compact.sort_by(&:attribute) “索引为空”是什么意思?您直接迭代数组,根本不使用索引

我试图在Ruby中根据objects的属性对数组进行排序,但我认为这行代码对数组中的nil元素进行操作

@my_array.sort_by {|object| object.attribute}
如何确保在数组中调用的方法不会调用nil元素上的方法?

您可以在排序之前使用数组(这将删除nil元素)

另外,这里有一个具体案例的捷径

sorted_arr = @my_array.compact.sort_by(&:attribute)

“索引为空”是什么意思?您直接迭代数组,根本不使用索引。您不必担心某个索引是否指向数组中的某个元素。@sawa:“空索引”的意思可能是“nil元素”@SergioTulentsev也许您是对的。OP的坏习惯是在标题中随机添加信息,没有任何解释,与文本无关。错误是由数组中的nil元素造成的,就像Sergio指出的,但我不确定,因为我是Ruby新手。
sorted_arr = @my_array.compact.sort_by(&:attribute)