2016-03-19 7 views
0

Wie kann ich andere Benutzerprofile als Admin verwalten und bearbeiten, da ich ein Modell und einen Controller (Benutzer) habe?Benutzer verwalten durch einen Admin in Ruby auf Schienen

Ich habe versucht, eine neue Aktion namens updateusers

def updateusers 
    @other_user=User.find(params[:id]) 
    if @other_user.update_attributes(otherusers_params) 
      redirect_to '/' 
    else 
      redirect_to '/manage' 
    end 
end 

das Problem hier hinzuzufügen: es mit dem

Stack-Trace
GET

Daten other_user mein Admin-Benutzer aktualisiert Schritte "/ verwalten" for :: 1 am 2016-03-19 21:06:08 +0300 Verarbeitung von UsersController # als HTML verwalten User Load (1.0ms) SELECT "Benutzer". * FROM "Benutzer" Gerenderte Benutzer/manage.html.erb in Layouts/Anwendung (5.0ms) User Load (0.0ms) SELECT "Benutzer". * FROM "Benutzer" WHERE "Benutzer". "ID" = ? LIMIT 1 [["id", 1]] Abgeschlossen 200 OK in 53ms (Aufrufe: 51.0ms | ActiveRecord: 1.0ms)

'Gestartet GET "/ users/10" für :: 1 am 2016-03-19 21:06:10 +0300 Verarbeitung durch UsersController # show as HTML Parameter: {"id" => "10"} Benutzer laden (0.0ms) SELECT "Benutzer". * FROM "Benutzer" WHERE "Benutzer". "ID" =? LIMIT 1 [["id", 10]] gerenderte Benutzer/show.html.erb in Layouts/Anwendung (0.0ms) User Load (0.0ms) SELECT "Benutzer". * FROM "Benutzer" WHERE "Benutzer". "ID "=? LIMIT 1 [["id", 1]] Abgeschlossen 200 OK in 37ms (Aufrufe: 36.0ms | ActiveRecord: 0.0ms)

Gestartet GET "/ editusers/10" für :: 1 am 2016-03-19 21 : 06: 11 +0300 Verarbeitung durch UsersController # editusers als HTML Parameter: {"id" => "10"} User Load (0.0ms) SELECT "Benutzer". * FROM "Benutzer" WHERE "Benutzer". "ID" = ? LIMIT 1 [["id", 10]] gerenderte Benutzer/editusers.html.erb in Layouts/Anwendung (4.0ms) User Load (1.0ms) SELECT "Benutzer". * FROM "Benutzer" WHERE "Benutzer". "ID "=? LIMIT 1 [["id", 1]] Erledigt 200 OK in 41ms (Aufrufe: 39.0ms | ActiveRecord: 1.0ms)

Gestartet PATCH "/ users/10" for :: 1 am 2016-03-19 21 : 06: 15 +0300 Verarbeitung von UsersController # Update als HTML Parameter: {"utf8" => "✓", "authenticity_token" => "6M1TGLQQHHezCCg9/rT5IofdroMiQ0sm + bYcihgGDxTjDdFGU2Riou2p cRk5ncjCtFDGwfBj17Uq7gc0u329w ==", "user" => {"first_name "=>" g "," letzter_name "=>" g "," email "=>" g @ gg "," rolle "=>" editor "," bild "=>" pic.png "," admins " => ""}, "other" => "update", "id" => "10"} Benutzer laden (0.0ms) SELECT "Benutzer". * FROM "Benutzer" WHERE "Benutzer". "ID" =? LIMIT 1 [[ "id", 1]] Unzulässige Parameter:? Rolle, Administratoren

(0,0 ms) beginnt Transaktion SQL (1,0 ms) UPDATE "Benutzer" SET "first_name" = "last_name" =, "E-Mail" =?, "aktualisiert_at" =? WHERE "Benutzer". "Id" =? [["erster_name", "g"], ["letzter_name", "g"], ["email", "g @ gg"], ["aktualisiert_at", "2016-03-19 18: 06: 15.488284" ], ["id", 1]] (47.0ms) commit transaction Weitergeleitet an localhost: 8080/profile Abgeschlossen 302 Gefunden in 54ms (ActiveRecord: 48.0ms)

+0

der ID, die Sie übergeben 'params [: id]' ist für den anderen Benutzer? – psantos

+0

Ich würde vorschlagen, den ActiveAdmin-Edelstein zu verwenden, anstatt ein eigenes Admin-System zu schreiben. http://activeadmin.info/ –

+0

Ja in der Show und bearbeiten Ansichten geben Sie mir die Daten des anderen Benutzers –

Antwort

0

nach 10 Tagen ,, Ja, ich tat es - die Lösung ist in des Namens vorlegen, mit dem Namen ich die beiden vorträgt mit diffrent Namen <%= f.submit "update", name:"other" %> dann habe ich die Update-Aktion wie diese

def update 
    if params[:current] 
     @user = current_user 
     if @user.update_attributes(user_params) 
      redirect_to '/profile' 
     else 
      redirect_to '/edit' 
     end 

    elsif params[:other] 
     @other_user=User.find(params[:id]) 
     if @other_user.update_attributes(otherusers_params) 
      redirect_to '/' 
      else 
      redirect_to '/manage' 
      end 
    end 

end 
1

Wenn es den falschen Benutzer aktualisiert, bedeutet dies, dass params[:id] ist Die ID des Benutzers wird aktualisiert. Übergeben Sie die ID des Benutzers, den Sie in den Parametern aktualisieren möchten? Versuchen Sie, puts params.inspect an der Spitze der Controller-Aktion aufzurufen, um zu sehen, welche Daten übergeben werden. Sie müssen @other_user mit ihrer ID nachschlagen, und Sie müssen sicherstellen, dass die ID des anderen Benutzers mit den anderen Formulardaten übergeben wird.

+0

Ich denke, es liest nicht die neue Update-Aktion (updateusers), es liest immer noch die ursprüngliche Update-Aktion ?? !! Ich habe zwei Update-Aktionen eine für den aktuellen Benutzer und eine für den Administrator, um die anderen Benutzer zu aktualisieren –

+0

haben Sie eine Route für updateusers in 'routes.rb'? – toddmetheny

+0

Patch '/ Benutzer/Update' => 'Benutzer # Update' - das Original ---- Patch 'Benutzer /: ID/UpdateUsers' => 'Benutzer # UpdateUsers' setzen 'Benutzer /: ID/UpdateUsers '=>' users # updateusers ' –

Verwandte Themen