Вы не можете вычесть из символа.Символ не является числом.
То, что вы, похоже, хотите сделать, это уменьшить значение 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
(что нет веских оснований для этого).
Однако вы НЕ должны делать ни одно изте, потому что вы можете добиться этого с намного меньшими хлопотами, позволяя БД делать работу:
Image.find(:first, :order => "id DESC", :conditions => ["id <= ?", params[:id]])
PS: в Ruby нет оператора --
, поэтому вынеобходимо использовать -= 1
для уменьшения числа.