Il y a le code suivant du contrôleur:Comment mettre à jour les relations en utilisant has_many dans Rails 4?
def create
@employee = business.beauty_salon_employees.build(employee_params)
if @employee.save
#
else
render 'new'
end
end
def edit
@employee = business.beauty_salon_employees.find(params[:id])
end
def update
@employee = business.beauty_salon_employees.find(params[:id])
if @employee.update(employee_params)
#
else
render 'edit'
end
end
protected
def employee_params
params.require(:beauty_salon_employee).permit(:name, :description, :phone, { beauty_salon_service_ids: [] })
end
Et le code suivant de vue:
- @business.beauty_salon_services.each do |s|
.row
= check_box_tag "beauty_salon_employee[beauty_salon_service_ids][]", s.id, @employee.beauty_salon_services.include?(s)
= s.name
Code Modèles:
has_many :beauty_salon_employee_services, dependent: :destroy
has_many :beauty_salon_services, through: :beauty_salon_employee_services
accepts_nested_attributes_for :beauty_salon_services
Et
has_many :beauty_salon_employee_services, dependent: :destroy
has_many :beauty_salon_employees, through: :beauty_salon_employee_services
Le problème est le suivant: quand je crée un BeautySalonEmployee avec quelques cases à cocher cochées (par exemple, 1) tout est bon. Mais lorsque j'essaie de mettre à jour cet enregistrement sans cases à cocher, je n'obtiens aucune erreur, mais rien n'est mis à jour, c'est-à-dire lorsque j'ouvre à nouveau cet enregistrement, je vois toujours 1 case cochée. Comment puis-je le réparer? Qu'est-ce qui ne va pas?