J'ai un éventail d'adhésions. Dans chaque adhésion est un groupe. J'ai besoin de trier ce tableau d'adhésions par nom de groupe. J'ai essayé un tas de façons différentes, et la dernière est la suivante:
@memberships.sort_by! { |m| m.group.name }
Cependant, cela ne trie pas par nom. Il semble trier aléatoirement le tableau.
@memberships est égal à:
[
{
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
}
}
]
REMARQUE: cela fonctionne -> @ memberships.sort_by! {| m | m.group.id}
Il ordonnera le tableau en fonction du group.id alors peut-être qu'il a quelque chose à voir avec le tri alphabétique?
Toute aide serait très appréciée.
Wow, après avoir lutté avec ça pendant très longtemps, j'ai réalisé que mon problème était simple. J'étais en train de trier par group.name mais certains des noms de groupe étaient en majuscules et certains étaient plus bas, ce qui mettait tout de côté. Tout convertir en downcase a bien fonctionné.
@memberships.sort_by!{ |m| m.group.name.downcase }
La méthode de tri est-elle une option?
ary.sort{ |a,b| a[:group][:name] <=> b[:group][:name] }
Je ne vois pas comment fonctionne votre code. Je ne peux pas accéder aux hachages dans les tableaux à l'aide de m.group.name
Voici une syntaxe de travail
@memberships.sort_by!{ |m| m[:group][:name] }