栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Ajax在Rails 3.2.3中使用will_paginate gem进行调用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Ajax在Rails 3.2.3中使用will_paginate gem进行调用

为什么不尝试更简单的方法,创建一个包含以下内容的新帮助器(例如app / helpers / will_paginate_helper.rb):

    module WillPaginateHelper      class WillPaginateJSlinkRenderer < WillPaginate::ActionView::linkRenderer        def prepare(collection, options, template)          options[:params] ||= {}          options[:params]['_'] = nil          super(collection, options, template)        end        protected        def link(text, target, attributes = {})          if target.is_a? Fixnum attributes[:rel] = rel_value(target) target = url(target)          end          @template.link_to(target, attributes.merge(remote: true)) do text.to_s.html_safe          end        end      end      def js_will_paginate(collection, options = {})        will_paginate(collection, options.merge(:renderer => WillPaginateHelper::WillPaginateJSlinkRenderer))      end    end

然后在您的视图中使用此标记进行ajax分页:

<%= js_will_paginate @recipes %>

请记住,分页链接将包含URL的现有参数,您可以如下所示排除这些参数。这是标准的分页功能:

<%= js_will_paginate @recipes, :params => { :my_excluded_param => nil } %>

希望能解决您的问题。

说明:

Will_paginate允许您创建自己的 自定义渲染器
。WillPaginateJSlinkRenderer是一个自定义渲染器,此类可以在任何地方定义,而不必在helper模块内部定义。自定义渲染器扩展了标准渲染器(linkRenderer)并仅重新定义了两种方法。

准备的方法
是重写明确移除缓存克星参数,因为will_paginate创建与渲染页面时在场的所有参数的网页网址,我们不希望重用缓存克星参数。

链接的方法
是从原来的一个复制粘贴linkRenderer源代码,而是创建了远程链接:真正使它成为一个JS
resquest。

最后, js_will_paginate
方法是一个标准的视图助手方法,用于调用常规的will_paginate视图助手方法,但会将我们的自定义渲染器添加到选项中,以便代替常规渲染器使用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427371.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号