0

ルビのリストの中から最初の有効な画像を見つけたいです。これが私のコードです:

 if(params[:id])

   @image = Image.find_by_id(params[:id])
   while @image.nil?
    :id-- ?
    @image = Image.find_by_id(params[:id])
   end

そのブロックで、有効な画像が見つかるまでID番号を減らし続けるにはどうすればよいですか? :/

ありがとう!

4

1 に答える 1

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(これを行う正当な理由はありません)。

ただし、データベースに作業を任せることで、はるかに手間をかけずにこれを実現できるため、これらのいずれも実行しないでください。

Image.find(:first, :order => "id DESC", :conditions => ["id <= ?", params[:id]])

PS: Ruby には--演算子がないため-= 1、数値を減らすために使用する必要があります。

于 2010-12-01T23:13:30.897 に答える