2016-09-04 18 views
0

私はビュー(erb)ファイルのドロップダウンリストに値を設定している配列を持っています。ドロップダウンリストに値でソートされた値を持たせたい(これはLast、Firstという名前のリストです。最後にソートしたいだけです)。私はGoogleで検索し、多くのことを試してみましたが、まだそれを把握することができていないきRailsドロップダウンリスト並べ替え値

<% 
    if @users 
    users_arr = [] 
    @users.each do |u| 
     users_arr << ["#{u.name}", u.id] 

    end 
    end 

    first_selected_parent = @kid.users && @kid.users.first ? @kid.users.first.id : "" 
    second_selected_parent = @kid.users && @kid.users.count > 1 ? @kid.users.last.id : "" 
%> 

:これは私が持っているものです。ありがとう!

答えて

0

なぜここで配列を使用していますか?組み込みのActiveRecord::Collectionオブジェクトを使用します。オブジェクトは、配列とほとんど同じですが、すべてのActiveRecordメソッドを使用できます。このコード:

User.all.order(:last_name => :desc) 

は、すべてあなたのUserレコードをつかむと、降順でlast_nameフィールドでソートします。あなたは.eachを使用して結果を反復処理することができます。

@users = User.all.order(:last_name => :desc) 
@users.each do |user| 
    # do stuff 
end 

あなたは、フォームの一部としてHTML <select>要素を取り込み、すべての奇妙な配列操作をスキップして、Railsのフォームヘルパーを使用しようとしている場合:

users_arr.sort: は
<%= form_for @resource, url: form_submission_path do |f| %> 
    <%= f.select :field_name, options_for_select(User.all.order(:last_name => :desc).map{|u| [u.last_name, u.id]}) %> 
<% end %> 
+0

完全な構文は、(例えば、各エントリの2番目の要素をソートするために)<=>演算子を使用します発展した。私はドロップダウンボックスの選択がデータベースを更新するフォームと共に提出されるため、そうであるかどうか疑問に思っています。 –

+0

@PeterFulton HTMLの '