Sunspot solr pagination не работает с каминари
Действия контроллера
def search_leads
@search = Sunspot.search(Lead) do |searcher|
searcher.all do
fulltext params[:email], :fields => :email
fulltext params[:name], :fields => [:first_name, :last_name]
end
searcher.paginate(:page => params[:page], :per_page => 10)
end
@leads = @search.results
respond_to do |format|
if (params[:email].present? || params[:name].present? ) and (current_user.credits > 0)
format.html { redirect_to search_leads_path }
format.js { }
else
format.html { redirect_to new_search_path }
end
end
end
search_leads.js.erb
$(".search_results").html("<%= escape_javascript(render :partial => 'search/search_results') %>");
$('#paginator').html('<%= escape_javascript(paginate(@search.hits, :remote => true).to_s) %>');
Html
<div id="paginator">
<%= paginate @search.hits, remote: true %>
</div>
Кнопки нумерации страниц появляются в результатах, но я не могу листать страницы. При нажатии на следующие страницы ни один звонок не переходит к solr.
1 ответ
Все ок, вопрос remote: true
на paginate
Просто обновите как ниже
Удалить remote: true
от paginate
и это будет на partial
например search_results.html.erb
<%= paginate @search.hits %>
и основной файл, например search_leads.html.erb
добавить этот скрипт
<script type="text/javascript">
$(document).ready(function() {
$('.pagination > a').attr('data-remote', 'true');
});
</script>
.pagination > a
is селектор, если это не работает, просто найдите селектор из консоли браузера и используйте его.
Я думаю, что эта строка не требует, удалите эту
$('#paginator').html('<%= escape_javascript(paginate(@search.hits, :remote => true).to_s) %>');
и на search_leads.js.erb
этот скрипт тоже хорошо
$(".search_results").html("<%= escape_javascript(render('search/search_results')) %>");