ruby-on-rails – 如何在对数组进行排序后对其进行分页?
发布时间:2020-12-17 03:05:26 所属栏目:百科 来源:网络整理
导读:我有一个控制器方法,通过派生属性对元素进行排序.只要我不尝试分页,我就可以打印到视图.当我调用@foos = @ foos.page params [:page]时,我收到以下错误:# Array:...的未定义方法’page’ 谁能在这里提供一些指导?谢谢. 这是整个控制器方法: def index_b
我有一个控制器方法,通过派生属性对元素进行排序.只要我不尝试分页,我就可以打印到视图.当我调用@foos = @ foos.page params [:page]时,我收到以下错误:#< Array:...>的未定义方法’page’
谁能在这里提供一些指导?谢谢. 这是整个控制器方法: def index_by_capacity if current_user.is_view_major? @foos = Foo.major_attr(:name) else @foos = Foo.order(:name) end @foos = @foos.sort_by! {|a| a.capacity_available.to_i } @total_foos = @foos.count @foos = @foos.page params[:page] respond_to do |format| format.html format.json { render json: @foos } end end 解决方法
> .sort_by!方法返回一个没有方法页面的数组(无法对ruby数组进行分页,你必须自己实现它或使用外部库).
>分页适用于ActiveRecord :: Relation对象,由.where或.order等查询返回 >在您的情况下,您应该在DB级别执行订单(比通过Ruby进行排序更快): @foos.order(:capacity_available) >如果capacity_available属性是String(不是Integer),则可以将其作为INT进行CAST: @foos.order('CAST(capacity_available AS INT) ASC') (您可能需要编辑CAST()函数,它应该适用于PostGreSQL,不确定MySQL) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |