产品控制器的未定义局部变量或方法“params”
undefined local variable or method `params' for products controller
我正尝试在我的 rails 应用程序上使用 kaminari 进行分页。在第一页我想展示 11 种产品,在所有其他页面我想展示 12 种产品。我按照 this post 上的说明进行操作,但出现以下错误:
undefined local variable or method `params' for #<Product::ActiveRecord_AssociationRelation:0x007fcef461e908>
使用的显示方法见下文:
@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
错误是在store#show下面这行代码中产生的:
<%= paginate @products %>
我能够通过在 instance_eval 之外创建一个 class 变量然后调用它来破解它的错误。请参阅下面的代码。
@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
可能不是正确的方法,但它适合我的目的。
我正尝试在我的 rails 应用程序上使用 kaminari 进行分页。在第一页我想展示 11 种产品,在所有其他页面我想展示 12 种产品。我按照 this post 上的说明进行操作,但出现以下错误:
undefined local variable or method `params' for #<Product::ActiveRecord_AssociationRelation:0x007fcef461e908>
使用的显示方法见下文:
@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
错误是在store#show下面这行代码中产生的:
<%= paginate @products %>
我能够通过在 instance_eval 之外创建一个 class 变量然后调用它来破解它的错误。请参阅下面的代码。
@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
可能不是正确的方法,但它适合我的目的。