2
長さ別にアルファベット順に並べ替えようとしています。私はアルファベット順に並べます、私は、フォームの代わりにページ分けされたリストを長さで並べ替え、RoRアプリケーションでアルファベット順に並べ替えます
Troop 1
Troop 11
Troop 111
Troop 1111
Troop 5
Troop 55
Troop 555
Troop 7
Troop 77
Troop 777
のリストを取得する場合、私は、単純なソートを行うことは名前の長さに基づいて、その後、トリックを行うだろうアルファベット順に名前を付けることを考えていた
Troop 1
Troop 5
Troop 7
Troop 11
Troop 55
Troop 77
Troop 111
Troop 555
Troop 777
Troop 1111
をしたいと思いますしかし、私は長さを分類することはできません。私はフォームのいくつかのバリエーションを試しました
def index
@title = 'Units'
@units = Unit.paginate(page: params[:page]).order(name: :asc).sort{|x, y| x.name.length <=> y.name.length}
end
無駄なことはありません。私は空間上で分割し、2番目の値(すなわち、数を取得)でソートする必要があるかもしれないと私にはわかりますが、その方法もわかりません。どんな助けでも大歓迎です!
魅力的なように働いています。助けてくれてありがとう! – mjswartz
実際、あなたが手伝ってくれる面白いものが見つかりました。リストに 'Crew 123'を追加すると、それは 'Troop 7'と 'Troop 11'の間に置かれます。スペースで分割し、分割配列の最初の項目でアルファベット順にソートし、分割配列の2番目の項目で数値でソートすることはできますか? – mjswartz
'.sort {| x、y | x = x.split( ''); y = y.split( ''); x [0] == y [0]? x [1] <=> y [1]:x [0] <=> y [0]} 'おそらく – Ven