Ich baue eine grundlegende Einkaufsliste Anwendung in Rails. Jedes "Element" hat zwei Eigenschaften: name und checked. Name ist nur der Name des Artikels. Checked soll anzeigen, ob der Benutzer den Artikel auf seiner Einkaufsliste "abgehakt" hat.Ruby-Methode funktioniert nicht wie erwartet
Ich habe eine einfache Methode in meinem Artikel-Controller, um dies zu beheben. Das Problem ist, dass die Methode nur false in true ändert. Es wird nicht rückgängig gemacht und ermöglicht es mir, Elemente zu deaktivieren.
Dies ist die Methode, die in meinem Element-Controller ist:
def checked
@item = Item.find(params[:id])
if [email protected]
@item.update(checked: :true)
else
@item.update(checked: :false)
end
redirect_to root_path
end
Dies wird für die Falschen zu wahres Gespräch nur arbeiten. Die zweite Hälfte der if-Anweisung scheint nicht zu funktionieren. Gedanken?
Ein einfacherer Weg: '@ item.update (checked: [email protected]?)' - Dein Code funktioniert nicht, weil er tatsächlich ein 'symbol' Objekt anstelle von' true' oder 'false' sendet, entferne das Semikolon vor 'true' und' false' und es sollte funktionieren. – MrYoshiji