我正试图在我的rails应用程序上使用kaminari进行分页。在第一页,我想显示11个产品,在所有其他页面,我想显示12个产品。我按照this帖子上的说明操作,但收到以下错误:
undefined local variable or method `params' for #<Product::ActiveRecord_AssociationRelation:0x007fcef461e908>
请参阅下面的正在使用的show方法:
@page = (params[:page]).to_i
if @page == 1
@products = Store.find(params[:id]).products.order(sort_column + ' ' + sort_direction).limit(11)
else
@products = Store.find(params[:id]).products.order(sort_column + ' ' + sort_direction).limit(12).offset(@page*12-13)
end
@products.instance_eval <<-EVAL
def current_page
#{@page}
end
def total_pages
((Store.find(params[:id]).products.all.count+1)/12.0).ceil
end
EVAL
错误是在以下代码行的商店#show中生成的:
<%= paginate @products %>
答案 0 :(得分:0)
我能够通过在instance_eval之外创建一个类变量然后调用它来破解它。见下面的代码。
@page = (params[:page] || '1').to_i
@@total_pages = ((Store.find(params[:id]).products.all.count+1)/12.0).ceil
if @page == 1
@products = Store.find(params[:id]).products.order(sort_column + ' ' + sort_direction).limit(11)
else
@products = Store.find(params[:id]).products.order(sort_column + ' ' + sort_direction).limit(12).offset(@page*12-13)
end
@products.instance_eval <<-EVAL
def current_page
#{@page}
end
def total_pages
@@total_pages
end
EVAL
可能不是正确的方法,但它适用于我的目的。