Я следовал инструкции на вики для этого драгоценного камня: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) %>
Но по какой-то причине я не получаю номера, чтобы изменить комментарий страницы:/