Rails активное хранилище, параметр Unpermitted - PullRequest
0 голосов
/ 02 марта 2019

Я использую Rails API и Vue для front-end.Я пытаюсь позволить пользователям загружать свои аватары с помощью Active Storage.Однако Rails жалуется, что параметр аватара недопустим.

На входе у меня есть простой ввод

<input id="avatar" type="file" @change="onImageChange" />

, который при изменении триггеров

onImageChange(event) {
  this.avatar = event.target.files[0];
}

Затем при отправке

submit() {
      const formData = new FormData();
      formData.append("avatar", this.avatar);
      this.axios
        .put("/api/signup", {
          ...
          user: {
            ...
            avatar: formData
          }
        })

Мы получаем запрос в обновлении RegistrationsController #.Мы включаем аватар в белый список

  def account_update_params
    params.require(:user).permit(:avatar, ...)
  end

И пользователь модели has_one_attached: avatar.

Однако при отправке я получаю

Параметры: {"headers" => {...}, "user" => {..., "avatar" => {}}}

Недопустимый параметр:: avatar

Я также попытался внести его в белый список, используя .permit! (: Avatar) и получил тот же результат.Есть идеи, в чем может быть проблема?Спасибо!

1 Ответ

0 голосов
/ 03 марта 2019

Я вижу аватар как json, а не как объект временного файла.Предположим, что json выглядит следующим образом: Параметры: {"headers" => {...}, "user" => {..., "avatar" => {"name" => "test.png", "file": <# Temp File Obj>}}}

Тогда мы будем использовать выражение

params.require(:user).permit(..., avatar: [:name, :file])
...