我寫了一個函數,它不會做我認爲它做的事,即使測試通過了。獲取基於.all和當前對象的x頁面Ruby
def max_pages(object, current_object, per_page = nil)
per_page = !per_page.nil? ? per_page : 10
max_pages = ((object.count - current_object.count)/ per_page.to_f).ceil
end
什麼,我想說的是,如果我給你10出20(總)的帖子,說我想每頁10個職位,我應該得到1頁。 此測試有效。但是現在如果我給你20個職位中的20個職位,並說每頁10個職位,我應該得到2頁。 此測試失敗
注:當我說「這個測試」我的意思是邏輯測試,而不是實際的RSpec。
因此,要使用此功能,你會怎麼做:
max_pages(Post.all, post.find(10)) # => 1 pages.
# I should get 2 pages but don't
max_pages(Post.all, Post.all) # => 0 Pages
# This isnt right either, I should only get one page...
max_pages(Post.all, Post.find(5)) # => 2 Pages
最後一次測試應該只給我一個頁面,因爲我只是要顯示5個帖子了所有的20個職位的,因爲我說默認每頁10個帖子,應該有1個頁面包含5個帖子。
我覺得這是一個邏輯問題:
max_pages = ((object.count - current_object.count)/ per_page.to_f).ceil
我不知道我會太改變這一點。
的概念,我想:
如果你有20個職位,我說我只想要3個員額,我應該每頁顯示10個職位(默認)。我應該得到一個頁面。
如果你有20個職位,我說我只想要15個職位,我只允許每頁5個職位,我應該得到3頁返回。
最後,如果您有1500個帖子,而您只需要500個帖子,而且每頁只允許發佈10個帖子,則應該有50個帖子。
我可以做(current_object.count/per_page.to_f).ceil
但我知道你必須考慮數據庫中有多少帖子。
我可能是可怕的錯誤。
您的評論不提供任何有幫助的意見,建議或提示。我已經清楚地列出了我的期望和回報。請考慮添加一些例子或沖洗你的評論痛風。 @PrakashMurthy – TheWebs
@PrakashMurthy是正確的。 'find(10)'將返回ID = 10的帖子;不會返回前10個帖子。這就是失敗的原因。如果你正在做分頁,我建議看看'will_paginate'或'kamanari'寶石。他們爲你處理所有這些。 –