0

这有效,但感觉很笨拙。是否有更多的 rails-y 方法来限制基于参数的集合?我正在使用活动模型序列化程序 gem,并且需要通过参数限制 json 响应。

def index    
 if params.has_key?(:limit)
   limit = params[:limit].to_i
   @pages = Page.all.take(limit)
 else
   @pages = Page.all
 end
end

如果我使用以下内容,我会在将字符串传递给限制参数时收到错误消息或什么也不传递。

def index
 @pages = Page.limit(params[:limit])

 respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @pages }
 end

结尾

谢谢!

4

1 回答 1

4

你不应该做任何事情。直接传入 params[:limit] 即可。

def index
  @page = Page.limit(params[:limit])
end

如果 params[:limit] 没有定义(nil),它只会返回所有的记录。您甚至不需要将其转换为整数。Rails 为您做到!

更新

如果您真的想检查是否没有传入非数字,您可以在 Page 类中创建自己的限制类方法(未经测试,但应该可以):

class Page << ActiveRecord::Base

  def self.limit(num = nil)
    num = num.to_i > 0 ? num : nil
    super(num)
  end

end
于 2012-05-25T02:59:58.133 回答