2016-03-19 4 views
0

Как я могу управлять и редактировать другие профили пользователей в качестве администратора, так как у меня есть одна модель и контроллер (пользователи)?управлять пользователями администратором в ruby ​​on rails

Я пытался добавить новое действие называется updateusers

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

здесь проблема: это обновление моего администратора пользователя с данным other_user в

трассировки стека
работы GET «/ управление» for :: 1 at 2016-03-19 21:06:08 +0300 Обработка пользователямиController # управляется как HTML User Load (1.0ms) SELECT «users». * FROM «users» Rendered users/manage.html.erb в макетах/application (5.0ms) Пользовательская загрузка (0.0ms) SELECT "users". * FROM "users" WHERE "users". "id" = ? LIMIT 1 [[«id», 1]] Завершено 200 OK в 53 мс (Просмотров: 51.0ms | ActiveRecord: 1.0ms)

«Начато GET»/пользователей/10 »для :: 1 на 2016-03-19 21:06:10 +0300 Обработка по UserController # показать как HTML Параметры: {"id" => "10"} Пользовательская загрузка (0.0ms) SELECT "users". * FROM "users" WHERE "users". "Id" знак равно LIMIT 1 [["id", 10]] Rendered users/show.html.erb в макетах/приложении (0.0ms) Пользовательская загрузка (0.0ms) SELECT "users". * FROM "users" WHERE "users". Id знак равно LIMIT 1 [["id", 1]] Завершено 200 OK в 37 мс (Просмотров: 36.0мс | ActiveRecord: 0.0ms)

Начато GET "/ editusers/10" for :: 1 at 2016-03-19 21 : 06: 11 +0300 Обработка по UserController # editusers как HTML Параметры: {"id" => "10"} Пользовательская загрузка (0.0ms) SELECT "users". * FROM "users" WHERE "users". "Id" = ? LIMIT 1 [["id", 10]] Представленные пользователи/editusers.html.erb в макетах/приложении (4.0ms) Пользовательская загрузка (1.0ms) SELECT "users". * FROM "users" WHERE "users". "Id знак равно LIMIT 1 [["id", 1]] Завершено 200 OK в 41 мс (Просмотров: 39.0ms | ActiveRecord: 1.0ms)

Начато PATCH "/ users/10" for :: 1 at 2016-03-19 21 : 06: 15 +0300 Обработка по UserController # update как HTML Параметры: {"utf8" => "✓", "authenticity_token" => "6M1TGLQUEhiezCCg9/rT5IofdroMiQ0sm + bYcihgGDxTjDdFGU2Riou2p cRk5ncjCtFDGwfBj17Uq7gc0u329w ==", "user" => {"first_name "=>" g "," last_name "=>" g "," email "=>" g @ gg "," role "=>" editor "," image "=>" pic.png "," admins " => ""}, "other" => "update", "id" => "10"} User Load (0.0ms) SELECT "users". * FROM "users" WHERE "users". "id" =? LIMIT 1 [["id", 1]] Параметры непереносимости: role, admins

(0.0ms) начать транзакцию SQL (1.0ms) UPDATE "users" SET "first_name" =?, "Last_name" =?, "email" =?, "updated_at" =? ГДЕ «пользователи». «Id» =? [["first_name", "g"], ["last_name", "g"], ["email", "g @ gg"], ["updated_at", "2016-03-19 18: 06: 15.488284" ], ["id", 1]] (47.0ms) commit transaction Перенаправлено на localhost: 8080/profile Завершено 302 Найдено в 54ms (ActiveRecord: 48.0ms)

+0

в ID, который вы передаете 'params [: id]' для другого пользователя? – psantos

+0

Я бы рекомендовал использовать самородку activeadmin вместо написания собственной системы администратора. http://activeadmin.info/ –

+0

Да в представлении шоу и редактирования дает мне данные другого пользователя –

ответ

0

после 10 дней ,, Да я сделал это - решение в имя представить, я назвал два ПРЕДСТАВЛЯЕТ с diffrent именами <%= f.submit "update", name:"other" %> тогда я использовал действие обновления, как этот

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

Если это обновление не того пользователя, это означает, что params[:id] идентификатор пользователя, который обновляется. Передаете ли вы идентификатор пользователя, который вы хотите обновить в параметрах? Попробуйте позвонить puts params.inspect в верхней части действия контроллера, чтобы узнать, какие данные передаются. Вам нужно искать @other_user с их идентификатором, и вам нужно убедиться, что id @ other_user передается с другими данными формы.

+0

Я думаю, что он не читает новое действие обновления (updateusers), он по-прежнему читает исходное действие обновления ?? !! У меня есть два действия по обновлению для current_user и один для администратора для обновления других пользователей. –

+0

У вас есть маршрут для updateusers в 'routes.rb'? – toddmetheny

+0

patch '/ users/update' => 'users # update' - оригинал ---- Пользователи патча /: id/updateusers '=>' users # updateusers ' put' users /: id/updateusers '=>' users # updateusers ' –

Смежные вопросы