Cerco di creare un modulo modello annidato per l'associazione has_one. (Sto usando Rails 4)Impossibile aggiornare il modulo del modello nidificato per l'associazione has_one
Nel mio utente, e il modello indirizzo Ho il seguente:
class User < ActiveRecord::Base
has_one :address
accepts_nested_attributes_for :address
end
class Address < ActiveRecord::Base
belongs_to :user
end
mio controller utente:
class UsersController < ApplicationController
.
.
.
def edit
@user = User.find(params[:id])
@user.build_address if @user.address.nil?
end
def update
@user = User.find(params[:id])
if @user.update(params.require(:user).permit(:user_name, address_attributes: [:street]))
flash[:success] = "Profile updated successfully"
sign_in @user
redirect_to @user
else
flash.now[:error] = "Cannot updating your profile"
render 'edit'
end
end
end
finalmente a mio avviso ho:
= form_for(@user) do |f|
= render 'shared/error_messages', object: f.object
%div
= f.label :user_name, "User name"
= f.text_field :user_name
= f.fields_for :address do |add|
= addd.label :street
= d.text_field :street
= f.submit "Update"
Quando provo a riempire la strada archiviata per la prima volta funziona, ma quando provo a aggiornare e ho ricevuto l'errore: Failed to remove the existing associated address. The record failed to save after its foreign key was set to nil
qualsiasi idea di dove si trova l'errore? grazie
funziona funziona grazie tu, questo è quello che cerco: D ma puoi spiegare di più quale è stata la causa del mio errore qui – medBo
puoi spiegarmi di più perché dovrei aggiungere id al mio indirizzo_attributi per favore – medBo
@medBo non so perché devi includere il: id per gli attributi nidificati che devi aggiornare. non è particolarmente documentato e ho avuto esattamente lo stesso problema un paio di mesi fa, lottando per un week-end prima di trovare la soluzione. forse uno sviluppatore senior/esperto di Rails può aiutarti. felice di essere stato utile ;-) – d34n5