I'm trying to render the error messages coming back from the server on a failed form submission using vue.js and axios.
COMPONENT:
<template>
<div>
<p>Sign Up</p>
<form v-on:submit.prevent="onSubmit">
<div>
<label>Email:</label>
<input type="text" name="user[email]" ref="user_email" />
</div>
<div>
<label>Password:</label>
<input type="text" name="user[password]" ref="user_password" />
</div>
<div>
<input type="submit"/>
</div>
</form>
<ul v-if="errors && errors.length">
{{ errors }}
</ul>
</div>
</template>
<script>
import axios from 'axios'
export default {
data() {
return {
errors: []
}
},
methods: {
onSubmit: function () {
axios.post('/users', {
user: {
email: this.$refs.user_email.value,
password: this.$refs.user_password.value
}
})
.then(response => {
})
.catch(error => {
console.log(error.response.data.errors)
console.log(error.response.status)
this.errors = error.response.data.errors
})
}
}
}
</script>
CONSOLE.LOG ERRORS
{email: Array(1), password: Array(1)}
422
As you can see I'm trying to render the {{ errors }} object just to get started but no errors are showing up on the page even if the server sent back some?
Just to be clear. How can I take the form validations coming back from the server and display them on the form if any exist? Using Vue.js and Axios. Thanks for the help!