С помощью команды "Управление", как отобразить страницу редактирования с помощью пользовательского действия обновления?

Я пытаюсь, чтобы мое пользовательское действие обновления для моего пользовательского контроллера отображало страницу редактирования, если они не проходят проверку, например так:

def update
  user = User.find(params[:id])
  user.update(user_params)
  # zero because checkbox
  user_params[:banned] == "0" ? user.remove_role(:banned) : user.add_role(:banned)
  if user.banned_note
    if user.banned_note.update(content: params[:user][:reason_for_ban])
      redirect_to "/admin/users/#{params[:id]}"
    else
      render "edit.html.erb"                                    # this line
    end
  end
end

def find_resource(param)
  User.find!(id: param)
end

Я хочу отобразить страницу редактирования с сообщением об ошибке, но то, что у меня есть, не работает. Я не уверен, как направить к правильному действию, так как нет никакого фактического представления или действия редактирования (которые автоматически генерируются гемом Администрации).

1 ответ

Решение

Панди, я не использовал этот драгоценный камень, но смотрю исходный код и этот комментарий к этой проблеме в GitHub. Вы пробовали следующее?

def update
  user = User.find(params[:id])
  user.update(user_params)
  # zero because checkbox
  user_params[:banned] == "0" ? user.remove_role(:banned) : user.add_role(:banned)
  if user.banned_note
    if user.banned_note.update(content: params[:user][:reason_for_ban])
      redirect_to "/admin/users/#{params[:id]}"
    else
      #This two lines
      flash.now[:notice] = "Something"
      render :new, locals: {
        page: Administrate::Page::Form.new(dashboard, resource),
      }
    end
  end
end

def find_resource(param)
  User.find!(id: param)
end
Другие вопросы по тегам