2012-03-30 41 views
-1

在用戶的頁面上有微博,每個微博都有它自己的評論表單和評論。使用「無盡網頁」railscast我試圖創建「顯示更多評論」按鈕,它將加載AJAX的評論。但它不起作用。AJAX micropost在用戶頁面上的評論

問題是show.js.erb的文件,因爲:

1)評論(沒有AJAX共同分頁)運作良好

2) 「顯示更多按鈕」 運作良好太。我測試了它的用戶列表頁面

我覺得 「顯示更多評論」 不工作,因爲它don'understand <%= j的渲染(評論)%>,<%= j的will_paginate(評論)%>和我應該在這裏有變量,如<%= j render(@comments)%>,<%= j will_paginate(@comments)%>

但是當我嘗試在我的users_controller.rb寫

def show 
    @micropost = Micropost.find(params[:micropost_id]) 
    @comments = @micropost.comments 
end 

這不是因爲我的用戶的頁面上有許多微觀柱工作,我有一個錯誤「無法找到沒有一個id微柱」。所以在我的microposts/_micropost.html.erb我不得不使用這個

<% comments = micropost.comments.paginate(:per_page => 5, :page => params[:page]) %> 

<%= render comments %> 

任何人都可以請幫忙嗎?我應該如何改變我的show.js.erb?

用戶/ show.html.erb

<%= render @microposts %> 

微柱/ _micropost.html.erb

... 
micropost's content 
... 

    <%= render 'comments/form', micropost: micropost %> 

    <% comments = micropost.comments.paginate(:per_page => 5, :page => params[:page]) %> 

    <div class="commentaries"> 
     <%= render comments %> 
    </div>  

    <div id="append_and_paginate"> 
     <%= will_paginate comments, :class =>"pagination", :page_links => false %> 
    </div> 

Javascript角/ users.js.coffee

jQuery -> 
    if $('.pagination').length 
    $('#append_and_paginate').prepend('<a id="append_more_results" href="javascript:void(0);">Show more</a>'); 
    $('#append_more_results').click -> 
     url = $('.pagination .next_page').attr('href') 
     if url 
     $('.pagination').text('Fetching more...') 
     $.getScript(url) 

用戶/ show.js.erb

$('.commentaries').append('<%= j render(comments) %>'); 
<% if comments.next_page %> 
    $('.pagination').replaceWith('<%= j will_paginate(comments) %>'); 
<% else %> 
    $('.pagination').remove(); 
<% end %> 
<% sleep 0.3 %> 

回答

0

本寧頓,在用戶/ show.html.erb你有

但@microposts沒有在你的控制器定義。我想你想要的是將@microposts定義爲所有與什麼相關的微博,一個用戶?

如果是這樣,你會想`@microposts = Micropost.where(:user_id => current_user.id)之類的東西。

+0

不,已定義。我只是沒有發佈這個,因爲它的一切都很好,問題不在那裏。在我的控制器中,我有「@user = User.find(params [:id])@microposts = @ user.microposts.order(」id「).page(params [:page])。per_page(10)。」 – Bennington 2012-03-30 10:30:16

+1

對不起,我不知道<%= j render(comments)%>表格。但是<%comments = micropost.comments.paginate(:per_page => 5,:page => params [:page])%> 似乎不尋常,我不知道你不應該把它放在你的控制器中嗎? 如果您需要,您可以創建類似@paginated_comments = micropost.comments.paginate(:per_page => 5,:page => params [:page])作爲實例變量來饋送到show.js.erb – 2012-03-30 12:49:11

+0

謝謝對於幫助,是的,如果我可以使用「@micropost = Micropost.find(params [:micropost_id])和@paginated_comments = @ micropost.comments.paginate(:per_page => 5,:page => params [:頁面])「在我的users_controller,但是當我試圖我有一個錯誤」找不到微博沒有身份證「 – Bennington 2012-03-30 13:16:03