棒球比分一般是多少:子在川上曰

  逝者如斯夫不舍晝夜
隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
數據加載中……

讓will_paginate的分頁支持ajax

關于will_paginate插件,請看這個帖子: //mmm.javaeye.com/blog/116931。
文/陳剛 (www.chengang.com.cn)
但一直搜不到它支持ajax分面的方法 ,于是我參考它分頁方法的源代碼(位于:vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb),稍微改寫,變成了一個支持ajax的分頁方法。以下代碼復制到application_helper里即可。


??
#-----------------------------------------
??#?will_paginate插件的ajax分頁
??#-----------------------------------------
??@@pagination_options?=?{?:class?=>?'pagination',
????????
:prev_label???=>?'上一頁',
????????
:next_label???=>?'下一頁',
????????
:inner_window?=>?4,?#?links?around?the?current?page
????????:outer_window?=>?1,?#?links?around?beginning?and?end
????????:separator????=>?'?',?#?single?space?is?friendly?to?spiders?and?non-graphic?browsers
????????:param_name???=>?:page,
????????
#add?by?chengang
????????:update?=>nil,?#ajax所要更新的html元素的id
????????:url_suffix?=>?''??#url的后綴,主要是為了補全REST所需要的url
????????#add?end
????????}
??mattr_reader?
:pagination_options

??def?will_paginate_remote(entries?
=?@entries,?options?=?{})
????total_pages?
=?entries.page_count

????
if?total_pages?>?1
??????options?
=?options.symbolize_keys.reverse_merge(pagination_options)
??????page
,?param?=?entries.current_page,?options.delete(:param_name)
??????
??????inner_window
,?outer_window?=?options.delete(:inner_window).to_i,?options.delete(:outer_window).to_i
??????
#add?by?chengang
??????update?=??options.delete(:update)
??????suffix?
=??options.delete(:url_suffix)
??????url?
=?request.env['PATH_INFO']?
??????url?
+=?suffix?if?suffix
??????
#add?end

??????
min?=?page?-?inner_window
??????
max?=?page?+?inner_window
??????
if?max?>?total_pages?then?min?-=?max?-?total_pages
??????elsif?
min?<?1??then?max?+=?1?-?min
??????
end
??????
??????
current???=?min..max
??????beginning?
=?1..(1?+?outer_window)
??????tail??????
=?(total_pages?-?outer_window)..total_pages
??????visible???
=?[beginning,?current,?tail].map(&:to_a).flatten.sort.uniq
??????links
,?prev?=?[],?0

??????visible
.each?do?|n|
????????
next?if?n?<?1
????????
break?if?n?>?total_pages

????????unless?n?
-?prev?>?1
??????????
prev?=?n
??????????
#change?by?chengang
??????????text?=?(n==page???n?:?"[#{n}]")
??????????links?
<<?page_link_remote_or_span((n?!=?page???n?:?nil),?'current',?text,?param,?update,?url)
????????
else
??????????
prev?=?n?-?1
??????????links?
<<?''
??????????redo
????????
end
??????
end
??????
??????
#change?by?chengang
??????links.unshift?page_link_remote_or_span(entries.previous_page,?'disabled',?options.delete(:prev_label),?param,?update,?url)
??????links
.push????page_link_remote_or_span(entries.next_page,?????'disabled',?options.delete(:next_label),?param,?update,?url)
??????
#change?end

??????content_tag?
:div,?links.join(options.delete(:separator)),?options
????
end
??
end
??
protected

??def?page_link_remote_or_span(page
,?span_class,?text,?param,?update,?url)
????unless?page
??????content_tag?
:span,?text,?:class?=>?span_class
????
else
??????link_to_remote?text
,?:update?=>?update,?:url?=>?"#{url}?#{param.to_sym}=#{page}",?:method=>:get
????
end
??
end


在view中的使用如下所示:
??????????<%=will_paginate_remote?@topics,?:update?=>?'topicList',?:url_suffix?=>?url_suffix%>


棒球比分大小怎么算 www.355548.live posted on 2007-09-02 15:42 陳剛 閱讀(4366) 評論(14)  編輯  收藏 所屬分類: Rails&Ruby

評論

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

怎么沒反應。。。
2007-09-05 22:12 | 陳老師好

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

不行啊,你試過能行?
2007-09-06 11:43 | 你自己試過?

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

url_suffix有沒有值,Ruby局域變量必須給一個初值,如果沒值讓他為nil
2007-09-07 17:09 | 陳剛

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

我就是讓他為nil
算了,已解決
2007-09-22 15:18 | 陳老師好

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

不行,出錯了,咋回事呢?
undefined method `to_i' for {:page=>nil}:Hash
RAILS_ROOT: ./script/../config/..

2007-10-17 10:08 | skatefish

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

您好,調試了一下還是蠻好用的了,想問一下能加上:loading=>Element.show這樣的參數么
2007-10-17 13:36 | skatefish

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

參照了您的修改,現在加上了loading和complete的效果,還是不錯的,謝謝:)
2007-10-17 13:48 | skatefish

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

不錯,很好用,謝謝!
2008-05-23 14:17 | 軒轅武

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

正想找一個支持AJAX的分頁呢,多謝分享!
2008-11-14 22:36 | yanghuan

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

請問一下:mattr_reader 這個是怎么用的??
2008-11-14 22:48 | yanghuan

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

假如使用RJS的話,普通的分頁就可以實現無刷新頁面的效果了。
2008-11-15 01:00 | yanghuan

# re: 讓will_paginate的分頁支持ajax[未登錄]  回復  更多評論   

找不到page_count這個方法 這是wii_paginate內建的方法嗎?
2008-11-15 15:58 | YY

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

樓上的,你把
total_pages = entries.page_count

換成

total_pages = entries.total_pages
就沒問題了,這是因為WillPaginate::Collection中沒有page_count方法。
2008-11-16 01:15 | yanghuan

# re: 讓will_paginate的分頁支持ajax  回復  更多評論   

過時了吧........
2009-08-21 15:03 | fl1429
{ganrao} 重庆时时全天计划50期 美国全民炒股 华东15选5 股票融资融券 内蒙古快3开奖l结 甘肃11选5前三遗漏 广西快乐十分好运遗漏 赌场游戏导航 浙江体彩6 1 好运快三走势图下载 饿了么股票代码多少 属牛的吉祥方位与数字 股票的基础知识入门 北京pc蛋蛋28最准的技巧 湖北福彩中心官网 深圳35选7开奖