メンバーシップの配列があります。各メンバーシップにはグループがあります。このメンバーシップの配列をグループの名前で並べ替える必要があります。私はさまざまな方法を試しましたが、最新の方法は次のとおりです。
@memberships.sort_by! { |m| m.group.name }
ただし、これは名前でソートされません。配列をランダムにソートしているようです。
@membershipsは次と等しい:
[
{
id: 2141,
user_id: 491,
group_id: 271,
member_type: "member",
group: {
id: 271,
name: "Derek's",
privacy: "open",
bio_image_url: "/bio_images/medium/missing.png?1340285189",
member_count: 1,
upcoming_checkins_count: 0
}
},
{
id: 2201,
user_id: 221,
group_id: 291,
member_type: "member",
group: {
id: 291,
name: "Rounded Developement",
privacy: "closed",
bio_image_url: "/groups/medium/291/bioimage.jpg?1340736175",
member_count: 7,
upcoming_checkins_count: 0
}
}
]
注:これは動作します-> @ memberships.sort_by! {| m | m.group.id}
Group.idに基づいて配列を並べ替えるので、アルファベット順の並べ替えと関係があるのでしょうか?
どんな助けでも大歓迎です。
うわー、これに非常に長い間苦労した後、私は私の問題が単純なものであることに気づきました。 group.nameでソートしていましたが、グループ名の一部は大文字で、一部は小文字で、すべてが破棄されていました。すべてをダウンケースに変換するとうまくいきました。
@memberships.sort_by!{ |m| m.group.name.downcase }
ソート方法はオプションですか?
ary.sort{ |a,b| a[:group][:name] <=> b[:group][:name] }
あなたのコードがどのように機能しているかわかりません。 m.group.name
を使用して配列のハッシュにアクセスできません
動作する構文は次のとおりです
@memberships.sort_by!{ |m| m[:group][:name] }