2013-05-31 3 views
0

У меня есть 2 класса: Posts и Comments, где должности has_many :comments и comments belongs_to post.Rails kaminari pagination для детского стола

Каждый из моих сообщений имеет страницу показа со списком комментариев, и я хотел бы разбивать комментарии по страницам. С текущим кодом у меня есть, я показываю список всех комментариев на всех страницах. Итак, если у меня есть 10 комментариев, и я хочу иметь 2 на каждой странице, я получаю 5 страниц с оригинальными 10 комментариями к ней. Может ли кто-то пролить свет?

Мой код:

Posts controller: 

def show 
    @post = Post.find(params[:id]) 
    @comments = @post.comments.page(params[:page]).per(3) 

    respond_to do |format| 
    format.html # show.html.erb 
    format.json { render json: @post } 
    end 
end 


"Show" views: 

<%= paginate @comments %> 

<% @post.comments.each_with_index do |comments, index| %> 
    <tr> 
    <td><%= index+1 %></td> 
    <td><%= comment.date %></td> 
    <td><%= comment.text %></td> 
    </tr> 
    <% end %> 
</table> 

ответ

1

Вы должны использовать постраничного объект в представлении, не получить их свежие из базы данных:

<% @comments.each_with_index do |comments, index| %> 
    <tr> 
    <td><%= index+1 %></td> 
    <td><%= comment.date %></td> 
    <td><%= comment.text %></td> 
    </tr> 
<% end %> 

Это получает их свежими, unpaginated:

@post.comments 
+0

Страницы отображаются правильно. Тем не менее, мои индексы сбрасываются каждый раз, когда я перехожу на следующую страницу. Есть ли способ сохранить комментарии при запуске индексов, несмотря на то, на какой странице они находятся? например, страница 1 имеет индексы 1-5, 2 имеет 6-10? Благодарю. – Mozbi

Смежные вопросы