未定义的局部变量或方法`params'用于产品控制器

时间:2015-09-08 02:28:19

标签: ruby-on-rails kaminari

我正试图在我的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 %>

1 个答案:

答案 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

可能不是正确的方法,但它适用于我的目的。