Tôi có một ví dụ nhỏ về ứng dụng Rails được gọi là vé, xem và chỉnh sửa vé hư cấu được bán cho nhiều khách hàng khác nhau. Trong tickets_controller.rb, bên def index
, tôi có dòng này tiêu chuẩn, được tạo ra bởi giàn giáo:Bạn thường sắp xếp các mục trong Rails như thế nào?
@tickets = Ticket.find(:all)
Để sắp xếp vé theo tên, tôi đã tìm thấy hai cách tiếp cận tốt. Bạn có thể làm theo cách này:
@tickets = Ticket.find(:all, :order => 'name')
... hoặc theo cách này:
@tickets = Ticket.find(:all).sort!{|t1,t2|t1.name <=> t2.name}
(Mẹo: tài liệu của Ruby giải thích rằng sort!
sẽ sửa đổi mảng mà nó được phân loại, như trái ngược với một mình sort
, trả về mảng đã sắp xếp nhưng để nguyên bản gốc).
Bạn thường sử dụng chiến lược nào? Khi nào bạn có thể sử dụng .sort!
so với cú pháp :order => 'criteria'
?
Thú vị. Tại sao nó sẽ vít lên phân trang nếu, ngay sau khi tôi kéo thông tin từ cơ sở dữ liệu, tôi sắp xếp! nó? Điều đó sẽ không xảy ra trước khi nó được chuyển đi để phân trang/hiển thị? –
Cuộc gọi tìm/paginate sẽ nhận dữ liệu theo khối (cho phép nói) 20. 20 sẽ được chọn ra khỏi cơ sở dữ liệu theo bất cứ điều gì: mệnh đề thứ tự bạn có, THEN được sắp xếp theo chức năng sắp xếp tùy chỉnh của bạn. Điều này có nghĩa là tập hợp trang sẽ được sắp xếp theo mệnh đề: thứ tự và mỗi trang theo chức năng của bạn. – Luke
Cảm ơn lời giải thích tuyệt vời! –