加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用will_paginate的RESTful分页路由

发布时间:2020-12-17 03:08:53 所属栏目:百科 来源:网络整理
导读:我有这样的嵌套路线: map.resources :foo do |foo| foo.resources :bar do |bar| bar.resources :baz endend 我在每个资源的索引操作中都有分页列表,我需要缓存每个页面,为此我需要路由是RESTful,我如何为它实现REFTful路由? 例如,我希望路线将是这样的:
我有这样的嵌套路线:

map.resources :foo do |foo|
  foo.resources :bar do |bar|
    bar.resources :baz
  end
end

我在每个资源的索引操作中都有分页列表,我需要缓存每个页面,为此我需要路由是RESTful,我如何为它实现REFTful路由?

例如,我希望路线将是这样的:

http://www.example.com/foo/:id/pages/:page_number
http://www.example.com/foo/:id/bar/:id/pages/:page_number

解决方法

我有同样的问题.我这样编写了自己的LinkRenderer来充分利用嵌套路由.

class PaginationListLinkRenderer < WillPaginate::ViewHelpers::LinkRenderer


protected

  def page_number(page)
    unless page == current_page
      if !@options[:params][:url].to_s.empty?
        tag(:li,link(page,@options[:params][:url] + "?page=" + page.to_s))
      else
        tag(:li,page,:rel => rel_value(page)))
      end
    else
      tag(:li,:class => "current")
    end
  end

  def previous_or_next_page(page,text,classname)
    if page
      if !@options[:params][:url].to_s.empty?
        tag(:li,link(text,@options[:params][:url] + "?page=" + page.to_s,:class => classname))
      else
        tag(:li,:rel => rel_value(page),:class => classname))
      end
      #tag(:li,page),:class => classname)
    else
      tag(:li,:class => classname + ' disabled')
    end
  end

  def html_container(html)
    tag(:ul,html,container_attributes)
  end

end

然后你必须用这个参数调用will_paginate:

<%= will_paginate :params => { :url => project_task_lists_path(@project) },:renderer => PaginationListLinkRenderer %>

我希望这有帮助 :)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读