头像图像未从 React Client 传递到 Rails API

如何解决头像图像未从 React Client 传递到 Rails API

在我的 Rails API 后端,我安装了 active_storage 并将头像附加到我的“Boxer”模型(即 has_one_attached :avatar)。我还允许 BoxersController 中的参数。

params.require(:Boxer).permit(//.......//,:avatar)

然而,每次我尝试在我的 React 前端创建一个新的“拳击手”时,虽然正在创建拳击手,但没有附加头像图像。这就是控制台中发生的事情。

console image

注意输入头像的方式,但后端无法识别。我觉得头像 URL 有问题(由于 url 中的“fakepath”) - 但我也认为后端可能存在问题,因为在传递参数后没有任何"avatar" => "" 或任何东西 - 根本没有引用头像。

这是我为此使用的 React 组件。请原谅我的笨拙尝试,我是 React/编码的新手,不知道自己在做什么。

import React,{ useEffect,useState } from "react";
import "./NewBoxer.css";
import axios from "axios";
import { useHistory } from "react-router";

function NewBoxer() {
  const [firstName,setFirstName] = useState("");
  const [lastName,setLastName] = useState("");
  const [height,setHeight] = useState("");
  const [weight,setWeight] = useState("");
  const [reach,setReach] = useState("");
  const [stance,setStance] = useState("");
  const [gym,setGym] = useState("");
  const [gyms,setGyms] = useState([]);
  const [avatar,setAvatar] = useState("");
  const [loading,setLoading] = useState(false);
  const [isError,setIsError] = useState(false);
  const [data,setData] = useState(null);
  const history = useHistory();

  const handleSubmit = () => {
    setLoading(true);
    setIsError(false);

    const data = {
      first_name: firstName,last_name: lastName,height: height,weight: weight,reach: reach,stance: stance,gym_id: gym,avatar: avatar,};
    
    axios.post("http://localhost:3001/Boxers",data).then((res) => {
      setData(res.data);
      setFirstName("");
      setLastName("");
      setHeight("");
      setWeight("");
      setReach("");
      setStance("");
      setGym("");
      setAvatar("");
      setLoading(false);
      history.push("/fighters/");
    });
  };

  useEffect(() => {
    axios
      .get("http://localhost:3001/gyms/")
      .then((response) => {
        setGyms(response.data);
      })
      .catch((error) => {
        console.log(error);
      });
  },[]);


  return (

          
          //...other form inputs removed...//



          <label htmlFor="height" className="mt-2">
              Choose An Avatar
          </label>
          <input
              type="file"
              className="form-control"
              id="avatar"
              placeholder="Avatar"
              onChange={(e) => setAvatar(e.target.value)}
              value={avatar}
              src={avatar}
            />
        </div>



        {isError && (
          <small className="mt-3 d-inline-block text-danger">
            Something went wrong. Please try again later.
          </small>
        )}
        <button
          type="submit"
          className="btn btn-primary mt-3"
          onClick={handleSubmit}
          disabled={loading}
        >
          {loading ? "Loading..." : "Submit"}
        </button>
      </div>
    </div>
  );
}

export default NewBoxer;

知道可能是什么问题吗?任何建议将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?