will_paginate + jquery ui tabs

时间:2011-02-14 15:32:02

标签: jquery ruby-on-rails user-interface jquery-plugins

HI,

我正在使用jquery ui模式对话框。在这个对话框中,我有两个jquery ui选项卡,每个选项卡包含一个div,其中包含使用will_paginate(rails)分页的项目列表。

我有几个问题:

  • 当我点击分页的页面我的模态已关闭,但我有url /?page = 2
  • 当我重新打开模态时,我在第一个标签的第二页上,如果我点击第二个标签,我也在第二页,这是不想要的

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我假设您的模态对话框正在关闭,因为您正在使用新参数刷新页面。以下是使用带有will_paginate的ajax的官方说明,因此您无需刷新页面:
https://github.com/mislav/will_paginate/wiki/Ajax-pagination

如果您不关心这些页面的可抓取性,也可以尝试RemoteLinkRenderer解决方案。基本上,创建一个名为remote_link_renderer.rb的帮助器并放入其中:

class RemoteLinkRenderer < WillPaginate::LinkRenderer
  def prepare(collection, options, template)
    @remote = options.delete(:remote) || {}
    super
  end

  protected
  def page_link(page, text, attributes = {})
    @template.link_to_remote(text, {:url => url_for(page), :method => :get}.merge(@remote), attributes)
  end
end

然后在您的视图中,确保您的will_paginate调用具有以下选项:

<%= will_paginate @items, :renderer => 'RemoteLinkRenderer' , :remote => { :update => 'items_div'} %>

其中@items是您的分页变量,items_div是要更新的dom元素的ID。

您可以谷歌搜索will_paginate remotelinkrenderer以获取更多信息。

至于你的第二次发布,问题是两个分页都使用相同的参数来跟踪他们所在的页面。您可以在调用will_paginate时在视图中修复此问题,包括一个或两个实例上的:param_name选项,例如:param_name=>:tab2_page。在此指定:http://rubydoc.info/gems/will_paginate/2.3.15/WillPaginate/ViewHelpers