mta*_*tay 0 ruby symbols subtraction
我想在ruby中的列表中找到第一个有效图像.这是我的代码:
if(params[:id])
@image = Image.find_by_id(params[:id])
while @image.nil?
:id-- ?
@image = Image.find_by_id(params[:id])
end
Run Code Online (Sandbox Code Playgroud)
在该块中,如何在找到有效图像之前继续减少id#?:/
谢谢!
您无法从符号中减去.符号不是数字.
你似乎想要做的是减少的价值params[:id]做,这当然是完全有可能(从字符串到整数转换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
Run Code Online (Sandbox Code Playgroud)
后者比第一个好,因为它没有变异params(没有充分的理由去做).
然而,你不应该做这类原因,因为你可以做到这一点多少少些麻烦,通过让DB做的工作:
Image.find(:first, :order => "id DESC", :conditions => ["id <= ?", params[:id]])
Run Code Online (Sandbox Code Playgroud)
PS:Ruby没有--运算符,因此您必须使用-= 1减少数字.