防范 will_paginate 的无效页码 (0)?

Guard against invalid page number (0) for will_paginate?

will_pagify gem will_paginate 如果您向它发送参数 page=0 将抛出错误。有没有比声明 page = nil (or 1) if param[:page] =~ /^[0]{,}$/ 更好的方法?希望这是为了支持零索引页面,我可以用函数参数禁用它。

*可能还有其他我没有测试过的无效输入。字符串为零。

更新:

试图避免:

begin
  model = Model.where(...).paginate(page: params[:page])
  <additional code>
rescue
  model = Model.where(...).paginate(page: '1')
  <redo additional code again or use function***>

对比

current_page = clean_page(params[:page])
model = Model.where(...).paginate(page: current_page)

您可以利用 WillPaginate has already done 来处理所有情况,如下所示:

def clean_page(page)
  begin 
    WillPaginate::PageNumber(page)
  rescue WillPaginate::InvalidPage
    1  
  end 
end 

这将处理所有相同的问题,因为您正在利用他们的验证过程,任何失败的内容都默认为第 1 页。

Working Example