benutzerdefinierte Aktion in Schienen 3

8

Ich versuche einen einfachen Link zu erstellen, der mein Attribut "status" in meinem Modell von "ausstehend" auf "aktiv" umschaltet. Wenn ich beispielsweise zum ersten Mal einen Benutzer erstelle, setze ich den Status auf "ausstehend". Wenn ich dann die Liste der Benutzer zeige, füge ich eine Schaltfläche hinzu, die den Status dieses Benutzers in "aktiv" ändern soll. Ich habe dies über eine benutzerdefinierte Aktion versucht (ist das ein guter Ansatz?), Aber ich habe Probleme mit der automatisch generierten benannten Route.

in meinem Benutzer index.html.haml: button_to "Manually Activate", activate_user_path

in routes.rb:

%Vor%

in users_controller.rb:

%Vor%

Das scheint zu funktionieren, wenn ich sage / users / 1 / activate, da der Status aktualisiert wird. Die Seite / users wird jedoch nicht angezeigt und gibt einen Fehler aus:

%Vor%

dh es hat ein Problem mit dem activate_user_path, den ich in meiner Ansicht angegeben habe. (Wenn ich jedoch einen anderen Pfad mit dem Namen routes-style verwende, den ich in meinem routes.rb nicht angegeben habe, um ihn zu testen, bekomme ich

%Vor%

so scheint es, dass es weiß, dass es in den routes.rb ist, aber etwas anderes ist falsch? Ich bin wirklich neu in Schienen und würde die Hilfe zu schätzen wissen! Danke!

    
butterywombat 19.12.2010, 21:30
quelle

2 Antworten

9

Ihr Link sollte folgendermaßen aussehen:

%Vor%

Sie müssen den Benutzer hinzufügen, den Sie aktivieren möchten.

    
klew 19.12.2010, 21:36
quelle
6

Eine Reihe von Problemen, kann ich sehen. Erstens sollten Sie die Datenbank NICHT mit einer GET-Anfrage aktualisieren. Zweitens wird button_to Ihnen ein Inplace-Formular zur Verfügung stellen, welches nach dem Klick an Ihre App gesendet wird. Drittens, wie Sie Ihre Routen eingerichtet haben, müssen Sie dem Benutzer den Pfad angeben (Sie haben ihn bereits getestet, indem Sie die URL bereits im Browser erstellt haben).

run

%Vor%

an der Eingabeaufforderung, um zu sehen, wie Ihre Routen aussehen und den Namen, den Sie verwenden können, um diese Routen zu generieren.

Ich vermute, dass Sie

verwenden müssen %Vor%

(Benutzer oder @user oder was auch immer das Benutzerobjekt ist). In Ihrem button_ rufen Sie an und ändern Sie das "Holen" zu "Post" in der Routes-Datei.

%Vor%     
Aditya Sanghi 19.12.2010 21:41
quelle

Tags und Links