との間には単純なbelongs_to
関係があるhas_many
とPost
思いますComment
。私は通常行います:
ルート:
resources :posts do
resources :comments
end
モデル:デフォルトのページサイズを設定します:
class Comments < ActiveRecord::Base
belongs_to :post
DEFAULT_PAGE_SIZE = 25
end
コントローラ:
class CommentsController
def index
post = Post.find(params[:post_id])
offset = params[:offset] || 0
limit = params[:limit] || Comment::DEFAULT_PAGE_SIZE
@comments = post.comments.offset(offset).limit(limit)
respond_to do |format|
#respond as you like
end
end
# more actions...
end
ビュー、ajaxを介してコメントをロードするために、次のようなリンクをさらにロードします。
<%= link_to "load more comments", post_comments_path(@post, :format => 'js'), :method => :get, :remote=>true id='load-more-comments' %>
また、オフセットをajaxポストにバインドしたいとします。
$ ->
$('#load-more-comments').on 'ajax:before', (event) ->
el = $(this)
offset = #count your offset, I often do by counting the <li>s already in the <ul>
el.data 'params', "offset=#{offset}"
# you could also pass the limit: el.data 'params', "offset=#{offset}&limit=#{some limit}"
.on 'ajax:complete', (event, xhr, status) ->
el = $(this)
el.removeData 'params' # remember to remove this.
私はまた、これを行うためのより良い方法に興味があります。答えと批評家を楽しみにしています。:)