在用户的页面上有微博,每个微博都有自己的评论表和评论。使用“Endless Page”railscast我正在尝试创建“显示更多评论”按钮,这将按照AJAX加载评论。但它不起作用。
问题在show.js.erb文件中,因为:
1)评论的共同分页(没有AJAX)运作良好
2)“显示更多按钮”也运作良好。我在用户列表页面上测试了它
我认为“显示更多评论”不起作用,因为它不理解<%= j render(comments)%> ,<%= j will_paginate(comments)%> ,我应该在这里有变量,如<%= 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 :(得分:0)
Bennington,在users / show.html.erb中你有
但是@microposts未在您的控制器中定义。我想你想要的是将@microposts定义为与用户相关的所有微博?
如果是这样,你需要像@microposts = Micropost.where(:user_id =&gt; current_user.id)之类的东西。