Я нашел так много ресурсов в Stackoverflow, которые столкнулись с проблемой, с которой я столкнулся, но, к сожалению, они не сработали для меня, и я, конечно, не знаю, чего мне не хватает.
Чтобы указать на некоторые ссылки, которые я проверял, нотем не менее, ни один из них не исправил это:
http://railscasts.com/episodes/174-pagination-with-ajax
Каминари с AJAX, не в состоянии разбить на страницыt работа
пагинация ajax kaminari не обновляет paginate
Вот что я сделал ниже :
widget_grid.rb
Обратите внимание, что эта таблица создана из Datagrid Gem, и у меня есть приведенные ниже определения таблиц / столбцов, которые хорошо отображаются.
class WidgetsGrid
include Datagrid
include Datagrid::Naming
include Datagrid::ColumnI18n
# Scope need for the Table
scope do
Model.includes(:another_model).where({ column A: %w(mango orange) }).order(created_at: :desc)
end
# Filters of the table
filter(:column_A) # Filter by column A
filter(:column_B) # You can filter the table by column B
# Columns of the table
column(:column_A)
column(:column_B)
column(:column_C)
column(:column_D)
end
widget_controller.rb
class WidgetsController < ApplicationController
def dashboard
@grid = WidgetsGrid.new(params[:widgets_grid]) do |value|
value.where(channel_id: @widget.channel).page(params[:page]).per(3)
end
@pagination_params = strip_pagination_params
respond_to :html, :js
end
private
def strip_pagination_params
params.inject({}) do |params_hash, param|
unless param[0]=="controller" || (param[0]=="action")
params_hash[param[0]] = nil
end
params_hash
end
end
end
_insight.html.slim
# By virtue of Datagrid Gem, I render the HTML table and its content and pagination using these two lines below:
= datagrid_table @grid
= paginate @grid.assets, :remote => true, params: @pagination_params
dashboard.html.slim
#insight # note the '#insight' is the same as <div id=insight>
= render partial: "insight_panel"
dashboard.js.erb
$("#insight").html("<%= escape_javascript(render partial: "insight_panel" ) %>");
app / assets / javascripts / dashboard.js.coffee
#= require jquery
#= require jquery_ujs
#= require dashboard_grid
app / assets / javascripts / dashboard_grid.js
$(function () {
$(".pagination").on("click", function () {
$(this).parent().html("Page is loading...");
$.getScript(this.href);
return false;
});
});
Когда я нажимаю ссылку Pagination, it clears the table and I get "Page is loading..." as in the image below
, и она не возвращает ни одной страницы пагинации, которую я щелкнул. Как использовать AJAX с Kaminari для нумерации страниц ?Я не знаю, чего мне не хватает, и это, безусловно, расстраивает меня.
Я также проверил комментарии на Railscast (первая ссылка, которую я разместил там)), Я вижу, что кто-то тоже сталкивался с этой проблемой, но у нее не было решения.
Я использую:
jQuery JavaScript Library v1.11.0
Ненавязчивый скрипт-адаптер для jQuery, который требует jQuery v1.7.0 и выше.
- Rails 4
- Ruby 2.2.2