Ruby on rails 如何检查rails控制器中是否存在参数?
这很有效,但感觉很糟糕。有没有更适合rails-y的方法来限制基于参数的集合?我使用的是活动模型序列化程序gem,需要通过参数限制json响应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时会收
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”谢谢