2016-01-15 1 views
1

Я следовал инструкции на вики для этого драгоценного камня:will_paginate комментарии частично не рендеринг?

https://github.com/mislav/will_paginate/wiki 

И он прекрасно работает для моего контроллера объявлений/я был в состоянии получить их постраничными, но я понятия не имею, как получить его работать с моим Комментарии. У моего контроллера комментариев нет метода show.

class CommentsController < ApplicationController 
    before_action :authenticate_user!, :except => [:show] 
    def create 
    @comment = Comment.new(params[comment_params]) 
    @comment.listing_id = params[:listing_id] 
    @comment.user_id = current_user.id 
    @comment.body = params[:comment][:body] 
    if @comment.save 
     flash[:success] = "Comment Successful." 
     redirect_to listing_path(@comment.listing) 
    else 
     flash[:alert] = "Comment Failed." 
    end 
    end 
    def destroy 
    @comment = @listing.comments.find(params[:id]) 
    @comment.destroy 
    flash[:success] = "Comment Removed." 
    redirect_to listing_path(@listing) 
    end 
    private 
    def comment_params 
    params.require(:comment).permit(:user, :body) 
    end 
end 

Это метод показать меня внутри мою ListingsController:

def show 
    @comment = Comment.new 
    @comment.listing_id = @listing_id 
end 

Это то, что отличает комментарии к моему пониманию

Это часть листингов/файл show.html.erb, где он дает свои комментарии:

<div class="commentblock"> 
    <div class="text-left"> 
    <%= render partial: 'comments/form' %> 
    <%= render partial: 'listings/comment', collection: @listing.comments.reverse %> 
    </div> 
</div> 

Я знаю первую часть кода рубина на самом деле отображает формы, но я не понимаю, как и как работает часть коллекции, или как применить к ней разбивку на страницы.

листинги/комментарий файл выглядит следующим образом:

<div class="panel panel-default"> 
    <div class="panel-heading"><%= comment.user.username %>: <%= time_ago_in_words(comment.created_at)%> ago</div> 
    <div class="panel-body"> 
    <%= comment.body %> 
    </div> 
</div> 

Я пробовал довольно много вещей, но я до сих пор не получить, где и что изменить в своем коде. Я вошел в листинге/комментарий и попытался добавить:

<%= will_paginate(comment) %> # this crashed, undefined method `total_pages' for #<Comment:0x007ff556a36468> 

EDIT: will_paginate вика говорит, что вы пройти постраничный массив, когда вы получите ошибку я получил, но я не знаю, что это делается>>. ; он не показывает, как вы могли бы сделать это ...

EDIT: http://csnipp.com/s/709 этот сайт сказал все, что вам нужно было создать файл конфигурации/инициализаторами/will_paginate.rb и поместить эту строку кода в нем:

require 'will_paginate/array' 

Но это не помогло

EDIT:

Если вы, ребята, нужно видеть больше кода на самом деле это на GitHub: https://github.com/ilovemysillybanana/pastie/

Я действительно застрял в этом D: Я следовал учебнику о том, как делать комментарии, но их не разбивали на страницы.

EDIT: Я исправил его!

Способ сделать это, заменив строку:

<%= render partial: 'listings/comment', collection: @listing.comments.reverse %> 

с этой линией:

<%= render partial: 'listings/comment', collection: @list_comments = @listing.comments.paginate(:page => 1, :per_page => 5) %> 

Но по какой-то причине я не получаю номера, чтобы изменить комментарий страницы:/

ответ

1
<%= render partial: 'listings/comment', collection: @listings = @listing.comments.reverse.paginate(:page => params[:page], :per_page => 10) %> 

Мой код был верным, я не понимал, что @listings или @list_comments создают lo которая должна быть разбита на страницы.Я пытался найти способ разбиться на страницы в одной команде (что, если возможно, мне все равно, но если вы знаете, как было бы хорошо знать будущее, я думаю) все равно, все, что мне нужно было сделать, чтобы исправить это было добавлено:

<%= will_paginate @listing_comments %> 
Смежные вопросы