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')) %>");
Другие вопросы по тегам