<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評(píng)論 - 915, 引用 - 0
    數(shù)據(jù)加載中……

    讓will_paginate的分頁(yè)支持ajax

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


    ??
    #-----------------------------------------
    ??#?will_paginate插件的ajax分頁(yè)
    ??#-----------------------------------------
    ??@@pagination_options?=?{?:class?=>?'pagination',
    ????????
    :prev_label???=>?'上一頁(yè)',
    ????????
    :next_label???=>?'下一頁(yè)',
    ????????
    :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的后綴,主要是為了補(bǔ)全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%>


    posted on 2007-09-02 15:42 陳剛 閱讀(4592) 評(píng)論(14)  編輯  收藏 所屬分類: Rails&Ruby

    評(píng)論

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

    怎么沒(méi)反應(yīng)。。。
    2007-09-05 22:12 | 陳老師好

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

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

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

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

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

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

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

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

    2007-10-17 10:08 | skatefish

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

    您好,調(diào)試了一下還是蠻好用的了,想問(wèn)一下能加上:loading=>Element.show這樣的參數(shù)么
    2007-10-17 13:36 | skatefish

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

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

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

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

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

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

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

    請(qǐng)問(wèn)一下:mattr_reader 這個(gè)是怎么用的??
    2008-11-14 22:48 | yanghuan

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

    假如使用RJS的話,普通的分頁(yè)就可以實(shí)現(xiàn)無(wú)刷新頁(yè)面的效果了。
    2008-11-15 01:00 | yanghuan

    # re: 讓will_paginate的分頁(yè)支持ajax[未登錄](méi)  回復(fù)  更多評(píng)論   

    找不到page_count這個(gè)方法 這是wii_paginate內(nèi)建的方法嗎?
    2008-11-15 15:58 | YY

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

    樓上的,你把
    total_pages = entries.page_count

    換成

    total_pages = entries.total_pages
    就沒(méi)問(wèn)題了,這是因?yàn)閃illPaginate::Collection中沒(méi)有page_count方法。
    2008-11-16 01:15 | yanghuan

    # re: 讓will_paginate的分頁(yè)支持ajax  回復(fù)  更多評(píng)論   

    過(guò)時(shí)了吧........
    2009-08-21 15:03 | fl1429
    主站蜘蛛池模板: 国产91免费在线观看| 九九久久国产精品免费热6| 最近2019中文字幕免费直播 | 日本免费高清一本视频| 亚洲中文字幕一二三四区苍井空| 久久免费国产视频| 国产免费一区二区视频| 亚洲欧洲日产国码一级毛片| 亚洲av纯肉无码精品动漫| 在线播放免费人成视频在线观看| 亚洲日韩精品无码专区加勒比☆| 久久精品亚洲中文字幕无码网站 | 久久精品国产亚洲AV麻豆网站| 久久青草免费91线频观看不卡| 久久精品亚洲精品国产色婷 | 无码国产精品一区二区免费I6| avtt天堂网手机版亚洲| 日韩在线免费看网站| 一级毛片aaaaaa视频免费看| 国产AV无码专区亚洲AVJULIA | 免费毛片在线看不用播放器| 操美女视频免费网站| 亚洲大尺度无码无码专线一区| 亚洲AV中文无码乱人伦在线视色| 国产一区二区三区免费观看在线| 亚洲视频一区在线| 四色在线精品免费观看| sss日本免费完整版在线观看| 亚洲电影免费在线观看| 成年私人影院免费视频网站| 一级女性全黄久久生活片免费| 亚洲AV无码久久精品成人| 国产在线观看麻豆91精品免费 | 97碰公开在线观看免费视频| 日韩国产精品亚洲а∨天堂免| 亚洲日本一区二区三区在线| 黄页网站免费在线观看| 人人爽人人爽人人片A免费| 亚洲精品国产成人专区| 国产成人免费ā片在线观看| 国产成人无码区免费网站|