小编Ara*_*ack的帖子

按对象属性排序数组但是使用nil?Ruby中的条件

我有一组用户,可能有也可能没有一系列初创公司.启动对象具有属性名称.

我想按启动名称对用户数组进行排序.但是当用户对象确实有启动时,我显然会收到错误.

在完成StackOverflow上的一些解决方案后,我尝试了以下代码.我正在使用HAML,这就是为什么没有"结束"关键字

- @users.sort do |a, b|
  - a.startup.nil? ? -1 : b.startup.nil? ? 1 : a.startup[0].name <=> b. startup[0].name
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误.

undefined method `name' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

在尝试

- @users.sort do |a, b|
  - a.startup[0].nil? ? -1 : b.startup[0].nil? ? 1 : a.startup[0].name <=> b. startup[0].name
Run Code Online (Sandbox Code Playgroud)

用户数组根本没有排序.

注意:我提到了这个SO post 在Ruby中对数组进行排序

我也试过了

  -@users.sort{|a,b| a.startup[0].name && b.startup[0].name ? a.startup[0].name <=> b.startup[0].name : a.startup[0].name ? -1 : 1 }
Run Code Online (Sandbox Code Playgroud)

这本质上是

foo.sort{|a,b| a && b ? a <=> b : a ? -1 : …
Run Code Online (Sandbox Code Playgroud)

ruby arrays sorting haml ruby-on-rails

1
推荐指数
1
解决办法
907
查看次数

标签 统计

arrays ×1

haml ×1

ruby ×1

ruby-on-rails ×1

sorting ×1