2012-03-07 63 views
0

我有一個分頁的評論模型,我希望點擊下一個按鈕時在同一頁面上加載更多評論的評論。我對如何去做這件事有點想法,但任何人都可以建議如何去做這件事。我已經有一些代碼。問題與Ajax追加

對於評論部分,而不是呈現我認爲它可能不得不尋找micropost和它的id找到正確的評論追加,但我不確定如何去把這一切聯繫在一起。

分頁JS

$(function() { 
    $("#CommentPagin a").live("click", function() { 
    $.getScript(this.href); 
    return false; 
    }); 
}); 

顯示JS

$("#cc").append('<%= escape_javascript(render :partial => "users/comments")%>'); 

註釋部分

<div id='comments'> 
    <% comments = micropost.comments.paginate(:per_page => 5, :page => params[:page]) %> 
    <div id="CommentPagin"> 
    <span class="CommentArrowIcon"></span> 
    <%= will_paginate comments, :page_links => false , :class =>"pagination" %> 
    </div> 
<%= render 'users/comments' %> 
</div> 

評論呈現部分

<div id="cc"> 
<% comments = micropost.comments.paginate(:per_page => 5, :page => params[:page]) %> 
<%= render comments %> 
</div> 

用戶控制器

def show 
    @user = User.find(params[:id]) 
    @school = School.find(params[:id]) 
    @comment = Comment.find(params[:id]) 
    @micropost = Micropost.new 
    @comment = Comment.new 
    @comment = @micropost.comments.build(params[:comment]) 
    @microposts = @user.microposts.order('created_at DESC').paginate(:per_page => 10, :page => params[:page]) 
     respond_to do |format| 
     format.html 
     format.js 
    end 
    end 
+0

安置自己的控制器代碼。 – James 2012-03-07 03:08:07

+0

@James任何幫助?呵呵 – Kellogs 2012-03-07 04:07:08

回答

2

I'm有點生疏與導軌時,這多少有些通用的答案。

我會加載從路徑/動作呈現只是你評論呈現部分爲HTML

下N個評論只是把它當做你在哪裏,從自己的API請求資產並利用它們來更新頁。

分頁JS

/** 
* jQuery 1.7+ 
* use .delegate() for older versions. 
**/ 
$("#CommentPagin").on('click', 'a', function(e){ 
    // Get data from server - make sure url has params for per_page and page. 
    $.get($(this).attr('href'), function(data){ 
     // refresh client with data 
     $("#cc").append(data); 
    }); 
}); 
+0

有了這個,我不需要show.js?另外,如果問題不多,我將如何從路由/操作中加載它? – Kellogs 2012-03-07 04:01:31

+1

不,只要請求位於同一個域上,這就足夠了。 – max 2012-03-07 04:40:14

+0

瞭解了,至於我的第二個問題,我不確定如何開始使用我的路線/動作來呈現這個問題,是否有可能幫助我? – Kellogs 2012-03-07 04:42:43