ルビのリストの中から最初の有効な画像を見つけたいです。これが私のコードです:
if(params[:id])
@image = Image.find_by_id(params[:id])
while @image.nil?
:id-- ?
@image = Image.find_by_id(params[:id])
end
そのブロックで、有効な画像が見つかるまでID番号を減らし続けるにはどうすればよいですか? :/
ありがとう!
ルビのリストの中から最初の有効な画像を見つけたいです。これが私のコードです:
if(params[:id])
@image = Image.find_by_id(params[:id])
while @image.nil?
:id-- ?
@image = Image.find_by_id(params[:id])
end
そのブロックで、有効な画像が見つかるまでID番号を減らし続けるにはどうすればよいですか? :/
ありがとう!
シンボルから減算することはできません。記号は数字ではありません。
または_ 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
、数値を減らすために使用する必要があります。