के लिए मेरे नेस्टेड मॉडल फॉर्म को अपडेट नहीं किया जा सकता है I have has_one एसोसिएशन के लिए नेस्टेड मॉडल फॉर्म बनाने का प्रयास करता हूं।has_one एसोसिएशन
मेरे उपयोगकर्ता (i रेल 4 का उपयोग कर रहा है), और पता मॉडल मेरे पास है निम्नलिखित:
class User < ActiveRecord::Base
has_one :address
accepts_nested_attributes_for :address
end
class Address < ActiveRecord::Base
belongs_to :user
end
मेरे उपयोगकर्ता नियंत्रक:
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
अंत में मेरे विचार में
मेरे पास है:
= 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"
जब मैं पहली बार दायर सड़क भरने की कोशिश करता हूं, लेकिन जब मैं अद्यतन करने की कोशिश करता हूं ई मुझे त्रुटि मिलती है: Failed to remove the existing associated address. The record failed to save after its foreign key was set to nil
कोई विचार कहां त्रुटि है? धन्यवाद
वाह यह काम करता है धन्यवाद आप, मैं यही खोजता हूं: डी लेकिन क्या आप मेरी त्रुटि का कारण यहां बता सकते हैं – medBo
क्या आप मुझे और बता सकते हैं कि मुझे अपने एड्रेस_ट्रिब्यूट्स में आईडी क्यों जोड़नी चाहिए कृपया – medBo
@medBo मुझे नहीं पता कि आपको क्यों शामिल करना है : नेस्टेड विशेषताओं को आईडी को अपडेट करना होगा। यह विशेष रूप से प्रलेखित नहीं है और कुछ महीने पहले मेरे पास एक ही समस्या थी, समाधान खोजने से पहले एक सप्ताह के अंत में संघर्ष कर रहा था। शायद एक और वरिष्ठ/विशेषज्ञ रेल डेवलपर मदद कर सकते हैं। सहायक होने के लिए खुश ;-) – d34n5