I am using Rails API and Vue for front-end. I am trying to let users upload their avatar using Active Storage. However, Rails complains that the avatar parameter is not allowed.
On the front-end I have a simple input
<input id="avatar" type="file" @change="onImageChange" />
Which, when changed triggers
onImageChange(event) {
this.avatar = event.target.files[0];
}
Then, on submit
submit() {
const formData = new FormData();
formData.append("avatar", this.avatar);
this.axios
.put("/api/signup", {
...
user: {
...
avatar: formData
}
})
We receive the request in the RegistrationsController#update. We include the avatar in the white list
def account_update_params
params.require(:user).permit(:avatar, ...)
end
And the model user has_one_attached :avatar.
However, on submit, I get
Parameters: {"headers"=>{...}, "user"=>{..., "avatar"=>{}}}
Unpermitted parameter: :avatar
I have also tried to white list it using .permit!(:avatar) and got the same result. Any idea what might be the problem? Thank you!