Ich möchte das erste gültige Bild unter einer Liste in Ruby finden. Hier ist mein Code:subtrahieren von Symbolen in Ruby
In diesem Block, wie kann ich die ID verringern, bis ein gültiges Bild gefunden wird? :/
Danke!
Ich möchte das erste gültige Bild unter einer Liste in Ruby finden. Hier ist mein Code:subtrahieren von Symbolen in Ruby
In diesem Block, wie kann ich die ID verringern, bis ein gültiges Bild gefunden wird? :/
Danke!
Sie können nicht von einem Symbol subtrahieren. Ein Symbol ist keine Nummer.
Was Sie scheinen tun zu wollen, ist der Wert von params[:id]
, zu verringern, was durchaus möglich, natürlich ist (nach dem die ID von String Umwandlung in Integer) von params[:id] = params[:id].to_i - 1
oder
id = params[:id].to_i
while @image.nil?
@image = Image.find_by_id(id)
id -= 1
end
Letzteres tun ist besser als das erste, weil es nicht mutiert params
(was gibt es keinen Grund zu tun).
aber Sie sollten auch nicht von denen tun, weil Sie dies mit viel weniger Aufwand erreichen können, indem Sie den db lassen die Arbeit machen:
Image.find(:first, :order => "id DESC", :conditions => ["id <= ?", params[:id]])
PS: Rubin hat keinen --
Operator , also müssen Sie -= 1
verwenden, um eine Zahl zu dekrementieren.
Sollten Sie nicht find_by_id (id), nicht find_by_id (params [: id]) verwenden? Ansonsten wird @image immer gleich sein, da Sie den Wert in params nicht dekrementieren. –
@Sam: Ja, natürlich. Dumm von mir. – sepp2k
Keine Sorge, und +1 auf Ihre Antwort! –