`*':否定参数(ArgumentError)

时间:2018-02-11 00:53:42

标签: ruby sorting flickr

我正在尝试根据每张照片的评论数量(count_comments)从Flickr API按降序排列一组照片对象。我正在使用以下代码。

def rank_photos(photos)
  photos.sort_by { |photo| photo.count_comments * -1 }
end

但是我收到以下错误消息。

  

*':否定参数(ArgumentError)

这是Array的样子

  

[{“id”=>“38280904752”,“所有者”=>“131718287 @ N07”,   “secret”=>“abe0b93180”,“server”=>“4583”,“farm”=> 5,   “title”=>“IMG_3640”,“ispublic”=> 1,“isfriend”=> 0,“isfamily”=> 0,   “count_comments”=>“0”,“tags”=>“华盛顿邮报dc web women codeher17   dctech科技“,   “url_m”=>“https://farm5.staticflickr.com/4583/38280904752_abe0b93180.jpg”,“height_m”=>“333”,“width_m”=>“500”},{“id”=>“38312540901”,   “owner”=>“131718287 @ N07”,“secret”=>“7b6e6805d4”,“server”=>“4568”,   “farm”=> 5,“title”=>“IMG_3458”,“ispublic”=> 1,“isfriend”=> 0,   “isfamily”=> 0,“count_comments”=>“0”,“tags”=>“华盛顿邮报直播网络   女性代码17 dctech科技“,   “url_m”=>“https://farm5.staticflickr.com/4568/38312540901_7b6e6805d4.jpg”,“height_m”=>“500”,“width_m”=>“333”},{“id”=>“38281453252”,   “owner”=>“131718287 @ N07”,“secret”=>“438293cffd”,“server”=>“4539”,   “farm”=> 5,“title”=>“IMG_3460”,“ispublic”=> 1,“isfriend”=> 0,   “isfamily”=> 0,“count_comments”=>“0”,“tags”=>“华盛顿邮报直播网络   女性代码17 dctech科技“,   “url_m”=>“https://farm5.staticflickr.com/4539/38281453252_438293cffd.jpg”,“height_m”=>“333”,“width_m”=>“500”}

为什么会抛出此错误?

1 个答案:

答案 0 :(得分:-1)

count_comments是一个字符串,因此您应该先将其转换为数字。在此过程中,您还可以完全消除乘法。

def rank_photos(photos)
  photos.sort_by { |photo| -photo.count_comments.to_i }
end