我将 Kaminari gem 用于我的 ruby on rails 应用程序(对于仍在使用 will_paginate 的任何人,我建议考虑切换!更清洁,更通用)。
我遇到的问题是我想在进行 AJAX 分页时指定一个控制器操作,即。让我的分页远程工作,例如:
<%= paginate @feeds, :param_name => :page, :remote => true%>
默认情况下,当我设置 :remote => true 并将以下几行添加到我的“页面”控制器 home.js.erb 文件中时,它可以在我的主页上运行。我什至不需要指定要引用哪个 js 部分;它会自动选择。
$('.synopsis').html('<%= escape_javascript render('exchanges/synopsis', :feeds => @feeds)%>');
$('.paginator').html('<%= escape_javascript(paginate(@feeds, :param_name => :page, :remote => true).to_s)%>')
但要注意的是,这个“概要”div 是我在应用程序的许多不同页面上呈现的部分内容。因此,在控制器不是我的“页面”控制器的页面上,远程分页不再起作用。
一种解决方案是将这两行添加到我的许多不同控制器中的 js.erb 文件中。但这将是多余和不雅的。
我希望能够在“分页”调用中指定用于远程调用的控制器和操作。然后我想我会写一个像这样的动作:
def paginate_remotely
respond_to paginate_remotely.js
end
我怎么能做到这一点?这似乎是一个简单的问题,但我无法弄清楚。以下肯定行不通:
<%= paginate @feed_exchanges, :param_name => :exchange_page, :remote => true, :controller => :exchanges, :action => :paginate_remotely %>