ruby-on-rails - 来自对 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;
但是当我尝试提交它时,我得到了这个:
参数:{"头像"=>{"附件"=>{}}}
不允许的参数::附件
但是,事务开始并成功提交,但没有制作附件
这 是一个非常相似的问题,但该解决方案也对我不起作用。
我有人对如何解决这个问题有任何想法,我将非常感谢您的帮助。
解决方案
推荐阅读
- javascript - 如何选择不包含锚点的元素?
- heroku - 查看 Heroku 上的旧日志
- python - 如何使用python和excel计算器
- javascript - 在Angular 6运行时重新分配复杂对象内的值
- javascript - 异步代码运行 - 在 react-native 中使用 Javascript OOP
- python - 为什么这个循环不会按照语句的顺序重复?
- javascript - 如何使 toLowerCase() 和 toUpperCase() 在浏览器之间保持一致
- c - C 语言乘法程序无法正常工作
- jmeter - JMeter 脚本记录问题 - 代理工作,但没有记录
- php - mysql的到达日期和离开约束(检查约束)