0

Pagination with AJAXで railscasts を見てきました。ネストされたモデルを使用して彼の方法を複製しようとしています。子モデルのビューや完全に統合されたコントローラーがないため、混乱しているようです。

製品に has_many のコメントがあるとします。商品ビュー内のコメントで will_paginate を使用して同じページネーションを行うにはどうすればよいですか?

アップデート:

これが私の試みのほとんどです(私の試みは実際にはkaminariを使用していますが、基本的にはwill_pagenateと同じです):

ビュー/製品/コメント/_index.html.erb:

<div id="comments">
  <% comments.each do |comment| %>
    <%= f.fields_for :comments, comments do |comment_builder| %>
      <%= render 'products/comments/field', f: comment_builder %>
    <% end %>
  <% end %>
  <%= paginate comments %>
</div>

ビュー/製品/コメント/_field.html.erb:

<fieldset>
  <%= f.hidden_field :_id, :value => f.object._id %>
  <%= f.hidden_field :_destroy %>
  <%= f.object.text %>
  <%= link_to "remove", '#', class: "remove_field" %>
</fieldset>

ビュー/製品/コメント/_index.js.erb:

$("#comments").html("j render("products/comments/index")) %>");

assets/javascripts/product.js

$('.pagination a').live
  click: ->
    $(".pagination").html("Page is loading...")
    $.getScript(this.href)
    false

controllers/comments_controller.rb

class CommentsController < ApplicationController
  before_filter :get_product

  def index
    @comments = @product.comments.desc(:created_at).page(params[:page]).per(10)
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @comments }
    end
  end

private

  def get_product
    @product = Product.find(params[:product_id]) if params[:product_id]
    redirect_to root_path unless defined?(@product)
  end
end

views/products/show.html.erb (抜粋)

<%= render "products/comments/index", f: f, comments: @comments%>

コントローラー/products_controller.rb

def show
  @product = Product.find(params[:id])

  @comments = @product.comments.desc(:created_at).page(params[:page]).per(1)

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

view/products/comments/_index.js.erb が呼び出されることはありません。また、これを行うよりレールのような方法はありますか?

4

0 に答える 0