Ich versuche, ein verschachteltes Modellformular für die Assoziation has_one zu erstellen. (Ich verwende Rails 4)Ich kann mein verschachteltes Modellformular für has_one nicht aktualisieren
In meinem Benutzer und Adresse Modell ich habe folgendes:
class User < ActiveRecord::Base
has_one :address
accepts_nested_attributes_for :address
end
class Address < ActiveRecord::Base
belongs_to :user
end
meinen Benutzer Controller:
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
endlich in meiner Sicht, ich habe:
= 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"
Wenn ich versuche, Straße eingereicht zum ersten Mal funktioniert es, aber wenn ich versuche, updat e ich bekomme den fehler: Failed to remove the existing associated address. The record failed to save after its foreign key was set to nil
eine idee wo ist der fehler? Danke
woow es funktioniert danke Sie, das ist, was ich suche: D aber können Sie mehr erklärt, was die Ursache für meinen Fehler hier war – medBo
können Sie mir mehr erklären, warum ich ID zu meinem address_attributes bitte hinzufügen sollte – medBo
@medBo ich weiß nicht, warum Sie einbeziehen müssen Die ID zu den verschachtelten Attributen, die Sie aktualisieren müssen. es ist nicht besonders dokumentiert und ich hatte genau das gleiche Problem vor ein paar Monaten, kämpft über ein Wochenende vor der Suche nach der Lösung. Vielleicht kann ein erfahrener Rails-Entwickler helfen. glücklich gewesen zu sein hilfreich gewesen ;-) – d34n5