2011-03-22 3 views
0

카미나리 보석을 사용하여 일련의 사진을 페이지 매김하려고합니다. 이미지는 Dog 모델의 show 액션에 표시되고 CarrierWave를 사용하여 DogPhoto라는 별도 모델로 업로드되었습니다. DogPhoto는 Dog에 속하고 Dog에는 DogPhotos가 많이 있습니다.Carrierwave 및 Kaminari로 이미지 페이지 매기기

는 개 컨트롤러의 show 액션은 (@dog가 이전 필터에로드) 다음과 같습니다

:

def show 
    @dog_photos = @dog.dog_photos.page(params[:page]).per(1) 
end 

그리고 쇼보기는 다음과 같습니다

<div id="dog_photos"> 
    <% if @dog_photos.count > 0 %> 
    <% @dog_photos.each do |dog_photo| %> 
     <%= image_tag dog_photo.photo_url %> 
    <% end %> 
    <%= paginate @dog_photos %> 
    <% else %> 
    <%= image_tag("dog-with-no-photo.png", :border => false) %> 
    <% end %> 
</div> 

는 페이지가로드 될 때 올바른 사진 수 (사진 당 한 페이지)에 대한 페이지 매김 링크가 표시됩니다. 그러나 첫 번째 사진 만 표시됩니다. 사용자가 "2"를 클릭하면 dog-with-no-photo.png 대체 이미지가 대신 표시됩니다.

답변

0

페이지 당 그림 수를 한 개로 제한하므로 show 코드에서 .per(1) 코드를 제거해야합니다.

+0

의견을 보내 주셔서 감사합니다. 내 목표는 페이지 당 하나의 사진을 표시하는 것입니다. '.per (1)'을 제거하면 모든 페이지가 단일 페이지로 표시됩니다. 목표는 사용자가 '다음 >>'을 클릭하여 한 번에 하나씩 사진을 탐색하도록하는 것입니다. –

+0

Mea culpa. 'page'와'per' 메쏘드의 순서를 바꾸려고 했습니까? –

+0

메쏘드를 반전 시키면 정의되지 않은 메쏘드 \'per '' 오류가 발생합니다. –