これはコードです:sort_byを使用しているときに、「nil。<=>」を評価中にエラーが発生したのはなぜですか?
xml = REXML::Document.new(data)
@contacts = Array.new
xml.elements.each('//entry') do |entry|
person = {}
person['name'] = entry.elements['title'].text
gd_email = entry.elements['gd:email']
person['email'] = gd_email.attributes['address'] if gd_email
@contacts << person
end
@contacts.sort_by { |k| k['name'] } if @contacts[0].size > 0
エラー:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.<=>
エラーは解決されましたが、まだソートされていません – rtacconi
@rtacconi '#sort_by'は、配列をその場所でソートせず、ソートされた新しい配列を返します。おそらく、あなたは '@contacts = @ contacts.sort_by ... 'を意味していたでしょう。 – Phrogz
はい、一般的に接尾辞[配列メソッド](http://ruby-doc.org/core/classes/Array.html#M002185)が必要です。 ) とともに '!'現在の配列を変更することができます。 – david4dev