gpt4 book ai didi

ruby-on-rails - 具有多态has_one模型的嵌套属性

转载 作者:行者123 更新时间:2023-12-02 04:16:06 25 4
gpt4 key购买 nike

我在rails 2.3.5中将hass_one多态模型与accepts_nested_attributes_for一起使用
以下是模型及其关联:

class Address < ActiveRecord::Base
attr_accessible :city, :address1, :address2
belongs_to :addressable, :polymorphic => true
validates_presence_of :address1, :address2, :city
end

class Vendor < ActiveRecord::Base
attr_accessible :name, :address_attributes
has_one :address, :as => :addressable, :dependent => :destroy
accepts_nested_attributes_for :address
end

这是 View :
- form_for @vendor do |f|
= f.error_messages
%p
= f.label :name
%br
= f.text_field :name
- f.fields_for :address_attributes do |address|
= render "shared/address_fields", :f => address
%p
= f.submit "Create"

这是部分shared / address_fields.html.haml
%p
= f.label :city
%br= f.text_field :city
%span City/Town name like Dharan, Butwal, Kathmandu, ..
%p
= f.label :address1
%br= f.text_field :address1
%span City Street name like Lazimpat, New Road, ..
%p
= f.label :address2
%br= f.text_field :address2
%span Tole, Marg, Chowk name like Pokhrel Tole, Shanti Marg, Pako, ..

这是 Controller :
类VendorsController
  def new
@vendor = Vendor.new
end

def create
@vendor = Vendor.new(params[:vendor])
if @vendor.save
flash[:notice] = "Vendor created successfully!"
redirect_to @vendor
else
render :action => 'new'
end
end
end

问题是当我填写所有文件时,记录将按预期方式保存在两个表上。

但是,当我仅提交名称和城市或地址1时,验证有效,显示错误消息,但我在城市或地址1中输入的值不保留或未在地址表单字段内显示?

编辑操作也是如此。

尽管记录已保存,但地址未显示在编辑表单上。仅显示客户端模型的名称。
实际上,当我查看日志时,甚至根本不查询地址模型SQL。

最佳答案

为什么是f.fields_for :address_attributes

不应该是:

- f.fields_for :address do |address_fields|
= render "shared/address_fields", :f => address_fields

它不会在编辑和错误时加载值,因为您永远不会使用 address_attributes中的值加载 @vendor.address

关于ruby-on-rails - 具有多态has_one模型的嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2735515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com