Я получаю эту ошибку:
ActiveRecord::AssociationTypeMismatch (Agent(#70150138059920) expected, got {"id"=>1, "name"=>"Sebastien", "phone_number"=>"345123900"} which is an instance of ActiveSupport::HashWithIndifferentAccess(#70150038272680)):
Я не понял, почему.
agent.rb:
belongs_to :management
management.rb:
has_one :agent
accepts_nested_attributes_for :agent, reject_if: proc { |attr| attr['name'].blank? && attributes['phone_number'].blank? }, allow_destroy: true
edit. vue:
<template>
<v-card class="mb-12>
<v-form :model='management' ref="managementForm">
<v-text-field
v-model='management.agent.name'
name="name">
</v-text-field>
<v-text-field
v-model='management.agent.phone_number'
name="number">
</v-text-field>
<v-btn @click.prevent='submit'>Save</v-btn>
</v-form>
</v-card>
</template>
<script>
export default {
data() {
return {
management {
agent: {
name: ""
phone_number: ""
}
}
}
methods: {
submit() {
if (this.$refs.managementForm.validate()) {
this.$axios.put('/management.json', { management: this.management })
.then(response => {
});
}
else {
this.$axios.post('/managements.json', { management: this.management })
.then(response => {
});
}
}
}
management_controller.rb:
def update
@management = current_management
render json: { errors: @management.errors.full_messages }, status: :unprocessable_entity unless current_user.management.update_attributes(management_params)
end
private
def company_params
params.require(:company).permit(agent: %i(id name phone_number))
end