我想在ruby中的列表中找到第一个有效图像。这是我的代码:
if(params[:id])
@image = Image.find_by_id(params[:id])
while @image.nil?
:id-- ?
@image = Image.find_by_id(params[:id])
end
在该块中,如何在找到有效图像之前继续减少id#? :/
谢谢!
答案 0 :(得分:9)
您无法从符号中减去。符号不是数字。
您似乎想要做的是减少params[:id]
的值,这当然是完全可能的(通过执行params[:id] = params[:id].to_i - 1
或
id = params[:id].to_i
while @image.nil?
@image = Image.find_by_id(id)
id -= 1
end
后者比第一个更好,因为它不会改变params
(没有充分的理由去做)。
但是你不应该做其中任何一个,因为你可以通过让db完成工作来减少很多的麻烦来实现这个目的:
Image.find(:first, :order => "id DESC", :conditions => ["id <= ?", params[:id]])
PS:Ruby没有--
运算符,因此您必须使用-= 1
递减数字。