ActiveRecordオブジェクトをアルファベット順にリストするために、Rails 3でクエリーセットとビュー(自分の状況では@contact)を作成するにはどうすればよいですか?Rails 3 ActiveRecordオブジェクトをアルファベット順にリストする
私はこの実装をしようとしています。 http://jquerymobile.com/demos/1.0b1/#/demos/1.0b1/docs/lists/lists-divider.html
おかげ
ActiveRecordオブジェクトをアルファベット順にリストするために、Rails 3でクエリーセットとビュー(自分の状況では@contact)を作成するにはどうすればよいですか?Rails 3 ActiveRecordオブジェクトをアルファベット順にリストする
私はこの実装をしようとしています。 http://jquerymobile.com/demos/1.0b1/#/demos/1.0b1/docs/lists/lists-divider.html
おかげ
あなたはこのような何かしなければならない:ビューで
@users = User.all.group_by{|u| u.name[0]}
を
は、ここでは、このエリアには本当に素晴らしいガイドです名前の最初の文字を保持する別の列(たとえばfirst_letter
)を作成し、最初の文字が文字でない場合は「#」を作成します。 (私は一度に1つの文字を示していたときに、あなたが最初の文字で照会していない場合、これはおそらく過剰ですので、私は一般的に、これを行う。)
お使いのコントローラコードが@contacts = Contact.all.order('first_letter, name').group_by(&:first_letter)
簡単なように見えます(HAML)ビューが(私はすぐにjQueryの携帯が欲しいの出力の種類を見ていないよ)次のようになります。
- (['#'] + ('A'..'Z').to_a).each do |letter|
%h2 #{letter}
%ol
- if [email protected][letter].empty?
- @contacts[letter].each do |contact|
%li #{contact.name}
DBからのすべての連絡先を取得し、:
A - - > コンタクト
Bで始まる> コンタクトなど
最終的な外観は、Bで始まります配列のenum.group_by
メソッドを使用してください:
をクールな答えのおかげで、このアプローチは、実際に動作しますが、私の実装では、私は、ネストされたビューのループを必要とする「ことにより、 JQueryモバイルは最初の文字とオブジェクトの名前を異なるCSSクラスとして保持するため、「開始名」と「連絡先名」 – Harry
...この時点で
@contacts.order(:name).group(:name)
は、結果のリストではありませんが、SQLを実行しますイテレータですあなたが最初に結果を得るためにそれを使用しようとするとき(.each、.count、etc)。 、
<% @users.keys.sort.each do |starting_letter| %>
<%= starting_letter %>
<% @users[starting_letter].each do |user| %>
<%= user.name %>
<% end %>
<% end %>
私はアルファベット順の結果を実行します。ActiveRecord querying
"F"で始まるすべてのユーザーへのリンクを作成し、これを別のページに表示するにはどうすればよいですか? –