首页 > 解决方案 > 来自对 Rails 主动存储 API 做出反应的“未经许可的参数”

问题描述

我正在尝试将图像存储和图像到 rails 6 API,但是当我尝试从前端发送图像时,它会创建一个新记录,但它不会将图像附加到它,说我的参数是不允许的。这是我的代码:

后端:

class Avatar < ApplicationRecord
  has_one_attached :attachment
end
class AvatarsController < ApplicationController
  def create
    avatar = Avatar.new(avatar_params)

    if avatar.save
      render json: avatar, status: :created
    else
      render json: avatar.errors, status: :unprocessable_entity
    end
  end

  private

  def avatar_params
    params.require(:avatar).permit(:attachment)
  end
end

前端:

import React from 'react';
import axios from 'axios';

const Avatar = () => {
  const handleChange = event => {
    const attachment = new FormData();
    attachment.append('avatar[attachment]', event.target.files[0]);
    axios.post('/api/v1/avatars', { avatar: { attachment } }, { withCredentials: true });
  };

  return (
    <form>
      <input type="file" accept="image/*" onChange={handleChange} />
    </form>
  );
};

export default Avatar;

但是当我尝试提交它时,我得到了这个:

参数:{"头像"=>{"附件"=>{}}}

不允许的参数::附件

但是,事务开始并成功提交,但没有制作附件

是一个非常相似的问题,但该解决方案也对我不起作用。

我有人对如何解决这个问题有任何想法,我将非常感谢您的帮助。

标签: ruby-on-railsreactjsrails-activestorage

解决方案


推荐阅读