#coding:utf-8
total_pages=11
current_page=10
a=(1..total_pages).to_a
#«首頁 #1
#2 #3
#4 #5
#...
#11
#尾頁»
#1/共11頁 #
#r=#if current_page-5>0
# r<<"1"
# r<<"..."+(current_page-3).to_s
# r<# r<# r<# if current_page+1<=total_pages
# r<# end
# if current_page+2<==total_pages
# r<# end
#else
# r.concat((1...current_page).to_a)
#end
#r<#if current_page+5<=total_pages
# r<# r<# r<<"..."+(current_page+3).to_s
#else
# r.concat(((current_page+1)..total_pages).to_a)
#end #
# ##puts r
#r=#r<#if current_page-2>0
# r.unshift current_page-1
# #end
#if current_page-5>0 and current_page+2<=total_pages
# a[1..
#end
#puts a r=
if total_pages<=6
r.concat((1..total_pages).to_a)
else
if current_page-5>0
if current_page+2<=total_pages
a.delete_if
elsif current_page+1<=total_pages
a.delete_if
elsif current_page-1>0
a.delete_if
elsif current_page>0
a.delete_if
endend
endif a.first!=1
a.unshift "..."
a.unshift 1
endif a.last!=total_pages
a<<"..."
aputs a
我也是費了好久,快要penkui了,可以看到注釋的部分我也是很糊,另外也有對ruby的函式不熟悉,(這個是藉口,主要是腦子不好使)
效果參見ecshop的分頁效果,
實現如下效果
«首頁1...
1415
1617
18尾頁»
17/共18頁
«首頁1...
1415
1617
18尾頁»
18/共18頁
«首頁 1
2345...
18尾頁»
1/共18頁
«首頁12345
6...
18尾頁»
4/共18頁
«首頁1
...4
5 6
78...
18尾頁»
6/共18頁
«首頁 1
尾頁»
1/共1頁
之前blog有一篇有python寫的分頁,比這個簡單,可以算是這個的子集
最終的**
#coding:utf-8
total_pages=11
current_page=10
a=(1..total_pages).to_a
#«首頁
#1#2
#3#4
#5#...
#11#尾頁»
#1/共11頁
# #r=
#if current_page-5>0
# r<<"1"
# r<<"..."+(current_page-3).to_s
# r<# r<# r<# if current_page+1<=total_pages
# r<# end
# if current_page+2<==total_pages
# r<# end
#else
# r.concat((1...current_page).to_a)
#end
#r<#if current_page+5<=total_pages
# r<# r<# r<<"..."+(current_page+3).to_s
#else
# r.concat(((current_page+1)..total_pages).to_a)
#end
#puts r
#r=#r<#if current_page-2>0
# r.unshift current_page-1
#end
#if current_page-5>0 and current_page+2<=total_pages
# a[1..
#end
#puts a
if total_pages>6
if current_page-5>0
if current_page+2<=total_pages
a.delete_if
elsif current_page+1<=total_pages
a.delete_if
elsif current_page-1>0
a.delete_if
elsif current_page>0
a.delete_if
endend
endif a.first!=1
a.unshift "..."
a.unshift 1
endif a.last!=total_pages
a<<"..."
aputs a
puts "----------"
pos=a.index(current_page)
def gen_link(page)
page=page.to_s
#拼接樣式輸出%q}
endr=
a.each_with_index do |elem,index|
page=elem
if elem=="..." and indexpage=a[a.index("...")+1]-1
endif elem=="..." and index>pos
page=a[a.rindex("...")-1]+1
endr#修改當前頁的樣式
r[pos]=%q
}if current_page==1
}r.unshift %q
r.unshift %q{}
else
page=current_page-1
}r.unshift %q
r.unshift %q{}
endif current_page==total_pages
}r<<%q
r<<%q
r<<%q
else
page=current_page+1
}r<< %q
r<<%q
endputs r
puts r.join("")
乙個面試題
題目是 假設乙個 搜尋引擎收錄了2 24首歌曲,並記錄了可收聽這些歌曲的2 30條url,但每首歌的url不超過2 10個。系統會定期檢查這些url,如果乙個url不可用則不出現在搜尋結果中。現在歌曲名和url分別通過整型的song id和url id唯一確定。對該系統有如下需求 1 通過song ...
乙個面試題
在不超過最右邊的數量的情況下任意組合,要求加起來不超過20280這個數字,但達成最接近的情況,現有一種方法為 1290 4 2990 5,差170,有沒有更接近20280的答案 資料如下 4900 13790 22990 5 意思是不能超過5次,但可以使用1次,2次,3次,4次,5次。2390 31...
乙個面試題
res fromkeys name password age print res print res print id res name id res password res name 666 print res 輸出 57496360 57496360 fromkeys 建立字典時,字典中所有的...