我正在进行以下代码练习。我对Ruby很新,并且一直坚持让最后一个方法工作。目前,除了“def page_index”之外,每种方法都可以使用测试代码。我在这里错过了什么吗?我似乎无法确定我在这部分做错了什么。任何帮助/指导表示赞赏!我还想指出,我删除了所有其他测试代码,并且只是该方法的部分当前不起作用。
代码是作为练习的一部分提供给我们的,我们被告知修复代码以使其与底部提供的测试代码一起运行。对于我遇到问题的方法,说明是:page_index获取项索引并返回它所属的页面,它确定项目所在的页面,基于零的索引,此方法应返回-1表示item_index值超出范围。
class PaginationHelper
attr_accessor :collection, :items_per_page
def initialize(collection, items_per_page)
@collection = collection
@items_per_page = items_per_page
end
def item_count
puts @collection.length
end
def page_count
puts @collection.length - items_per_page
end
def page_item_count(page_index)
page_item_count = @items_per_page - page_index
if page_index >= 2
puts -1, "Page is invalid."
else
puts (@items_per_page - page_index)
end
end
def page_index(index)
index = @collection - item_index.to_i
if page_index >= 2
puts -1, "Page is out of range"
else
puts (@collection-index.to_i)
end
end
end
helper = PaginationHelper.new(['a','b','c','d','e','f'], 4)
helper.page_index(5)
helper.page_index(2)
helper.page_index(20)
helper.page_index(-10)
答案 0 :(得分:2)
我想以下代码就是你要找的:
class PaginationHelper
attr_accessor :collection, :items_per_page
def initialize(collection, items_per_page)
@collection = collection
@items_per_page = items_per_page
end
def item_count
puts @collection.length
end
def page_count
puts @collection.length - items_per_page
end
def page_item_count(page_index)
page_item_count = @items_per_page - page_index
if page_index >= 2
puts -1, "Page is invalid."
else
puts (@items_per_page - page_index)
end
end
def page_index(item_index)
index = @collection.length - item_index
if index <= 0 || item_index < 0
puts "-1\tPage is out of range"
else
puts (item_index / items_per_page).to_i
end
end
end
helper = PaginationHelper.new(['a','b','c','d','e','f'], 4)
helper.page_index(5)
helper.page_index(2)
helper.page_index(20)
helper.page_index(-10)