Ruby on rails 如何检查rails控制器中是否存在参数?

Ruby on rails 如何检查rails控制器中是否存在参数?,ruby-on-rails,ruby,paginate,Ruby On Rails,Ruby,Paginate,这很有效,但感觉很糟糕。有没有更适合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 如果使用以下命令,则在向limit参数传递字符串或nothing时会收

这很有效,但感觉很糟糕。有没有更适合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
如果使用以下命令,则在向limit参数传递字符串或nothing时会收到错误消息

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

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


谢谢

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

def index
  @page = Page.limit(params[:limit])
end
如果未定义params[:limit](nil),它将只返回所有记录。您甚至不需要将其转换为整数。Rails为你做的

更新

如果确实希望检查未传入非数字,可以在Page类中创建自己的limit类方法(未测试,但应该可以使用):

类第0页?数字:零
超级(num)
结束
结束

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

def index
  @page = Page.limit(params[:limit])
end
如果未定义params[:limit](nil),它将只返回所有记录。您甚至不需要将其转换为整数。Rails为你做的

更新

如果确实希望检查未传入非数字,可以在Page类中创建自己的limit类方法(未测试,但应该可以使用):

类第0页?数字:零
超级(num)
结束
结束

我也这么认为,但我有错误。我正在使用活动模型序列化程序gem转换为json。下面是控制器的其余部分:respond_to do | format | format.json{render json:@pages}endIf我尝试URL:我得到了错误:Integer()的无效值:“aaaa”谢谢我这么认为,但我得到了错误。我正在使用活动模型序列化程序gem转换为json。以下是控制器的其余部分:respond_to do | format | format.json{render json:@pages}endIf我尝试URL:我得到错误:Integer()的值无效:“aaaa”谢谢