Saya memiliki sedikit kode dalam model user.rb
saya seperti ini:
def self.aggregate(articles)
array = []
articles.each do |a|
array << {
:id => a.nid,
:views => a.daily_view_metrics.sum_views(a.nid),
:date => a.daily_view_metrics.latest_date(a.nid),
:title => a.daily_view_metrics.latest_title(a.nid),
:visits => a.daily_view_metrics.sum_visits(a.nid)
}
end
return array
end
Di user_controller
saya, saya meneruskan ke metode show
@metrics = User.aggregate(@articles)
(@artikel hanyalah subkumpulan artikel untuk pengguna itu)
Sekarang dalam pandangan saya (user#show
) saya memanggil @metrics.each do |m|
dan kemudian menampilkan semua hal yang berbeda dalam sebuah tabel. Sekarang menurut video ini tampaknya metode link_to dengan parameter url tampaknya menjadi cara terbaik untuk membuat pengguna secara dinamis mengubah hal-hal yang ingin mereka urutkan.
Bagaimana saya bisa memasukkan parameter url untuk mengurutkan array? Saya mencoba memanggil @metrics.sort_by{|h| h[params[:sort]]}.each do |m|
dengan :sort
menjadi parameter url dari tautan saya (yaitu klik tautan tajuk tabel tampilan melewati :sort => ":views"
. Pada dasarnya saya mencoba melakukan ini sort_by{|h| h[:views]}
karena itu berfungsi dengan baik untuk menyortir array. Namun tidak ada yang terjadi. Array tidak ada tidak diurutkan.
Sunting:
Saya menyelesaikannya dengan membuat metode agregat meneruskan kunci sebagai string (yaitu "id" dan bukan :id). maka parameter url berfungsi dengan baik.
<%= link_to "Views", :sort => "views"%>
sekarang mengurutkannya berdasarkan penayangan dalam urutan menaik.
.to_sym
jika perlu.params[:sort] # => "views"
params[:sort].to_sym # => :views
- person Rafa Paez   schedule 10.03.2014