На странице пользователя есть микросообщения, и у каждого из них есть своя форма комментария и комментарии.Используя "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
, это не работает, потому что на странице моего пользователя много микросообщений, и у меня появляется ошибка "Невозможно найти микросообщение безидентификатор ".Так что в моем microposts / _micropost.html.erb мне пришлось использовать это
<% comments = micropost.comments.paginate(:per_page => 5, :page => params[:page]) %>
<%= render comments %>
Может кто-нибудь, пожалуйста, помогите?Как мне изменить мой show.js.erb?
users / show.html.erb
<%= render @microposts %>
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>
javascripts / 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)
users / 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 %>