在用戶的頁面上有微博,每個微博都有它自己的評論表單和評論。使用「無盡網頁」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 %>
不,已定義。我只是沒有發佈這個,因爲它的一切都很好,問題不在那裏。在我的控制器中,我有「@user = User.find(params [:id])@microposts = @ user.microposts.order(」id「).page(params [:page])。per_page(10)。」 – Bennington 2012-03-30 10:30:16
對不起,我不知道<%= 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
謝謝對於幫助,是的,如果我可以使用「@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