Что может помешать редактированию на месте в моем приложении rails 4?

У меня есть приложение rails 4, в котором я хочу использовать Best in Place или Rest in Place или любой другой драгоценный камень, чтобы обеспечить редактирование на месте.

Я пробовал с этими двумя. В обоих случаях я устанавливаю атрибут «имя» пользователя для редактирования на месте.

Когда я посещаю страницу показа пользователя, я нажимаю на имя, и появляется поле ввода. Но при отправке он не будет обновлять запись.

Журналы:

Processing by UsersController#update as JSON
  Parameters: {"user"=>{"name"=>"lkj"}, "authenticity_token"=>"TOz1cbnLc5KrX5JLZl0hiOsf7ZvwXhp6lD2qUIfH+og=", "id"=>"7"}
  User Load (0.1ms)  SELECT "users".* FROM "users" WHERE "users"."remember_token" = '62f0af062cc8544a31bfe5a02ef00bf34d449959' LIMIT 1
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", "7"]]
   (0.1ms)  begin transaction
  User Exists (0.2ms)  SELECT 1 AS one FROM "users" WHERE (LOWER("users"."email") = LOWER('[email protected]') AND "users"."id" != 7) LIMIT 1
   (0.1ms)  rollback transaction
Completed 500 Internal Server Error in 41ms

Может быть, отправляемое сообщение является PUT, а не PATCH?

Мое действие обновления в контроллере пользователей:

def update
    if @user.update_attributes(user_params)
      flash[:success] = "Perfil actualizado"
      sign_in @user
      redirect_to @user
    else
      render 'edit'
    end
end

Любая помощь будет высоко ценится.

Спасибо!


person Joaquin Llaneza    schedule 21.11.2013    source источник
comment
какой у тебя файл маршрутов?   -  person ksu    schedule 22.11.2013


Ответы (1)


Если вы измените

if @user.update_attributes(user_params)

к следующему:

if @user.update_attributes!(user_params)

Вы получите более подробное сообщение об ошибке.

если это не сработает, попробуйте Rails.logger.debug(user_params) просмотреть хэш ваших параметров в логах.

резюме:

def update
    if @user.update_attributes!(user_params)
      flash[:success] = "Perfil actualizado"
      sign_in @user
      redirect_to @user
    else
      render 'edit'
    end
end

Отладка соответственно!

person godzilla3000    schedule 22.11.2013
comment
спасибо jquadrin, с более подробным сообщением об ошибке я только что понял, что user_params также отправляет параметр «пароль» с нулевым значением, которое не проходит проверку. спасибо и привет. - person Joaquin Llaneza; 23.11.2013