ruby-on-rails - 无法为 has_one 关联更新我的嵌套模型表单

标签 ruby-on-rails

我尝试为 has_one 关联创建嵌套模型表单。 (我正在使用 Rails 4)

在我的用户和地址模型中,我有以下内容:

class User < ActiveRecord::Base
 has_one :address
 accepts_nested_attributes_for :address
end

class Address < ActiveRecord::Base
 belongs_to :user

end

我的用户 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

最后在我看来,我有:
= 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
知道错误在哪里吗?谢谢

最佳答案

在您的 Controller 中 UsersController ,在 update方法,添加 address: :id到地址允许的属性。像这样:

params.require(:user).permit(:user_name, address_attributes: [:id, :street]))

关于ruby-on-rails - 无法为 has_one 关联更新我的嵌套模型表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984093/

相关文章:

ruby-on-rails - 无法在我的 Controller 中使用 Geocoder 类

ruby-on-rails - RoR - 外键设置为 nil 后记录保存失败

ruby-on-rails - 将周数转换为日期

ruby-on-rails - 在不重启 rails 服务器的情况下更新 Assets

javascript - Rails Javascript 压缩/缩小 respond_to javascript 响应?

ruby-on-rails - 有安装 RMagick 的简单方法吗?

css - 如何在 Rails 4 元素中添加外部 Assets 文件?

ruby-on-rails - Heroku Amazon s3 图像 - 有时会出现 403 错误?

ruby-on-rails - ActiveModel::Serializer belongs_to 属性未显示在 json 响应中

ruby-on-rails - Rails I18n,检查翻译是否存在?