2012-05-07 3 views
-1

두 페이지에 페이지 매김을 적용하고 싶습니다. 두 개의 다른 모델에서 레일에 페이지 매기기를 적용하는 방법 3

Id Comment   Created at 
1  Comment One  2012-04-23 13:11:24 
2  Comment Two  2012-04-23 13:11:25 
3  Comment Three 2012-04-23 13:11:28 

나는 결과 다음 원하는

메시지

Id Message   Created at 
1  Message One  2012-04-23 13:11:23 
2  Message Two  2012-04-23 13:11:26 
3  Message Three 2012-04-23 13:11:27 

입찰

(두 최신 입찰 또는 메시지) 하나 개의 쿼리

Id Content   Created at 
    3  Comment Three 2012-04-23 13:11:28 
    3  Message Three 2012-04-23 13:11:27 
+1

구글은 "레일의 페이지 매김은" 당신은 옵션 홍수있어! –

+0

또한 수많은 중복이 있습니다! http://stackoverflow.com/search?q=pagination+rails –

+0

@Aayush 쿠마 : - 쿼리 최적화와 같은 몇 가지 매개 변수가 있습니다. 나는 바보 같은 간단한 질문을 묻지 않고 있습니다. 1000 개의 메시지와 1000 개의 입찰가에서 2 개의 최신 메시지를 표시하려면 2000 개의 레코드를 가져온 다음 페이지 매김을 적용해야합니까? ....... 모든 입찰가와 모든 메시지를 적용한 다음 페이지 매김을 적용하고 싶지 않습니다. 그 위에 ...... ...... – Salil

답변

0

will_paginate라는이 멋진 보석이되어 사용 . 내 응용 프로그램에서 그것을 사용하고 있습니다.

this railscast에서 설치 방법을 확인하십시오. 그것의 아주 쉽고 위대한.

감사합니다.

0

한 걸음 물러서서 메시지와 입찰가에 대해 두 개의 별도 표가 필요한 이유를 묻습니다. 나에게 둘 다 텍스트 알림을 저장하는 것처럼 보입니다. 단일 테이블 상속 또는 다형성 연결을 사용해야합니다 (미래에는 다른 비즈니스 논리가 나타날 것입니다).

자세한 내용은 this blog을 확인하십시오.

페이지 레이아웃이 두 ​​테이블에 걸쳐 있다는 것은 디자인의 냄새라고 생각합니다. 전체 컨텍스트가 없기 때문에 디자인 변경의 자유가 있는지 확실하지 않습니다. 그러나, 단지 생각!

+0

질문에 주어진 건 뭐든지 내 실제 데이터베이스 구조 ..... 거기에 더 많은 5 열 각 테이블에 ...... 나는 다형성을 알고 있습니다 .....하지만 여기에서는이 경우 다형성을 사용할 수 없습니다 – Salil

0

첫 번째로 먼저 페이지 번호 매기기 기록 여러 테이블은 코드 냄새입니다.

당신이 나쁜 접근 방식을 가고 싶어 그래도 경우, 코드를 다음 당신에게 도움이 될 수 있습니다

records = [Message, Comment, Post].inject([]) do |record, with_class| 
    record+with_class.order('created_at DESC')#you can add limit, offset here 
end 


#Now paginate those records 

@records = WillPaginate::Collection.create(current_page, per_page, records.size) do   |pager| 
      pager.replace(@records) 
      end 
관련 문제