2016-04-04 5 views
0

İletileri ve gönderildiklerinde sıralayabileceğiniz bir tablom var. Şu anda kullanıcı, ileti gövdesini sipariş ederek başladığı sayfaya girdiğinde, bir kullanıcı sayfayı başlattığında zaman aşımına uğradığı zamanla başlamasını isterim. Bazı kodları ve ekran görüntüsünü göstereceğim. Bu kodu # 228 numaralı trende de buldum.Sıralama ile otomatik pozisyon?

Onları sıralayan yöntemler aşağıdadır.

def sort_column 
    Message.column_names.include?(params[:sort]) ? params[:sort] : "body" 
end 

def sort_direction 
    %w(asc desc).include?(params[:direction]) ? params[:direction] : "asc" 
end 

İşte onlar sayfasını açtığınızda ok mesajlarıyla ilgili olduğu görebileceğiniz gibi kullanıcı, gördüğü manzara

<tbody> 
    <% @message.each do |message| %> 
     <tr> 
     <td><%= message.body %></td> 
     <td><%= time_ago_in_words message.created_at %> ago</td> 
     <td><%= message.groups.order(:id).pluck(:name).to_sentence %></td> 
     </tr> 
    <% end %> 
    </tbody> 

budur. Okun, yönü ile "gönder" konumunda olmasını istiyorum.

enter image description here

Bunu yeterince bilgi olup olmadığından emin değilim ama bana bildirin!

cevap

1

Sizin sort_column ve sort_direction fonksiyonları varsayılan "body" ve "asc" için.

Eğer created_at varsayılan olarak sıralama düzeni varsayılan şöyle işlevlerini değiştirmek istiyorsanız:

def sort_column 
    Message.column_names.include?(params[:sort]) ? params[:sort] : "created_at" 
end 

def sort_direction 
    %w(asc desc).include?(params[:direction]) ? params[:direction] : "desc" 
end 
+0

Haklısın ama iki farklı tablolar için bu yöntemleri var. Yani eğer bunu biri için yaparsam, diğer görünümümü yanlış biçimlendirir. baska öneri? – Bitwise

+0

Bu noktada yapabileceğiniz çok sayıda seçenek var. Başlamak için basit bir yer 'sort_column' yönteminizi 'Message.column_names.include? (Params [: sort]) gibi bir sınıf değişkenini kullanmak olacaktır. params [: sort]: @default_sort_column || "created_at" Ve sonra eylemlerde, '@ default_sort_column' değişkenini –

+0

olarak ayarlayın. Yakut için biraz yeniyim, cevabınızı bana daha net hale getirmek için bu yorumu kullanarak düzenleyebilir misiniz? – Bitwise

1

sadece oluşturma tarihine göre iletileri görüntülemek istiyorsanız, böyle endeks eylem 'em çekin:

Message.order(created_at: :desc)