我的嵌套模式形式我試圖創建的HAS_ONE關聯嵌套的模型形式。 (我使用Rails 4)不能更新HAS_ONE協會
在我的用戶,和地址,模型我有以下:
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
任何想法,是錯誤?感謝的
WOOW它的工作原理謝謝你,這是我搜索:d但你可以詳細解釋了什麼是我在這裏的錯誤的原因 – medBo
你能解釋我爲什麼更多的我要補充ID我address_attributes請 – medBo
@medBo我不知道爲什麼你必須包括將:id添加到您必須更新的嵌套屬性中。它沒有特別記錄,幾個月前我也遇到過完全相同的問題,在尋找解決方案之前,在一週的時間裏苦苦掙扎。也許更高級/專業的Rails開發人員可以提供幫助。高興是有幫助的;-) – d34n5