2.2.2에서 2.3.5로 Rails 애플리케이션을 업그레이드 중입니다. 유일한 나머지 오류는 jqgrid를 만들기 위해 total_entries
을 호출 할 때 발생합니다.Rails 2.2.2에서 2.3.5로 업그레이드 한 후 정의되지 않은 메소드 'total_entries'
오류 :
NoMethodError (undefined method `total_entries' for #<Array:0xbbe9ab0>)
코드 :
@route = Route.find(
:all,
:conditions => "id in (#{params[:id]})"
) {
if params[:page].present? then
paginate :page => params[:page], :per_page => params[:rows]
order_by "#{params[:sidx]} #{params[:sord]}"
end
}
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @route }
format.json { render :json => @route }
format.jgrid {
render :json => @route.to_jqgrid_json(
[
:id, :name
],
params[:page],
params[:rows],
@route.total_entries
)
}
end
어떤 아이디어가? 감사! 내가 find
후 사용 블록을 제거하여 작업 얻을 수 있어요
편집 할 수 있습니다. 또한 정의되지 않은 메서드 호출을 받고 있으므로 다람쥐 플러그인에서 사용하는 order_by
을 이동해야했습니다.
두 개 이상의 위치에서 conditions
을 사용하면 이전 코드보다 덜 건조하다는 사실을 좋아하지 않습니다. Rails 2.3.5, will_paginate 및 다람쥐를 사용하여 더 좋은 방법이 있습니까?
if params[:page].present? then
@route = Route.paginate :conditions => "id in (#{params[:id]})", :page => params[:page], :per_page => params[:rows], :order => "`#{params[:sidx]}` #{params[:sord]}"
else
@route = Route.find(:all, :conditions => "id in (#{params[:id]})")
end
편집 2
이 오류의 또 다른 가능성은 내가 레일 2.2.2와 루비 1.8.7를 사용하고 있었다 지금은 루비를 사용하고 있다고 할 수있다 레일 2.3.5과 한 묶음. 1.8.7과 1.9.1 사이에 ActiveRecord 찾기가 실행되지 않은 후에 블록을 차단하는 주요 변경 사항이 있습니까?
찾기 (: 모든) 레일에
그럼 대신 범위를 사용할 수 있습니다 2.2.2는 또한 Array를 반환합니다. 2.3.5와 비공개 사이에 알려진 비 호환성이 있습니까? – Trevor
정규적인 형태로 사용되는 경우 특정 문제에 관해서는 알지 못합니다. 이 경우 @ route.length를 대신 사용 하시겠습니까? – tadman