ruby-on-rails – 接受带有表单的多个模型
发布时间:2020-12-17 03:18:40 所属栏目:百科 来源:网络整理
导读:我有一个供应商名称和电子邮件的基本表单设置.我想将我的地址属性嵌套到这个表单中,但我一直得到以下错误 Unpermitted parameter: address class Supplier ActiveRecord::Base has_many :addresses,dependent: :destroy,as: :addressable accepts_nested_att
我有一个供应商名称和电子邮件的基本表单设置.我想将我的地址属性嵌套到这个表单中,但我一直得到以下错误
class Supplier < ActiveRecord::Base has_many :addresses,dependent: :destroy,as: :addressable accepts_nested_attributes_for :addresses end class Address < ActiveRecord::Base belongs_to :addressable,polymorphic: true belongs_to :supplier end class SuppliersController < ApplicationController def allowed_params params.require(:supplier).permit(:name,:email,{:address_attributes => [:first_name,:last_name,:address1,:address2,:city,:zip_code,:country_id]}) end end 供应商表格 %fieldset#admin-supplier-names.span-12 %label Name = form.text_field :name %label Email = form.text_field :email = form.fields_for :address do |address_fields| %li= address_fields.text_field :first_name,placeholder: :first_name.upcase,value: current_user.first_name %li= address_fields.text_field :last_name,placeholder: :last_name,value: current_user.last_name %li= address_fields.text_field :address1,placeholder: :address_1 %li= address_fields.text_field :address2,placeholder: :address_2 %li= address_fields.text_field :city,placeholder: :city %li= address_fields.text_field :zip_code,placeholder: :post_code %li=address_fields.select :country_id,select_countries,:include_blank => true 解决方法
供应商和地址以及表单代码之间的关联声明不同步.
如果您的供应商只能有一个地址,请在适用的情况下使用以下内容更新您的代码: class Supplier < ActiveRecord::Base has_one :address,as: :addressable,dependent: :destroy accepts_nested_attributes_for :address end class Address < ActiveRecord::Base belongs_to :addressable,polymorphic: true end class SuppliersController < ApplicationController def new @supplier = Supplier.new @supplier.build_address end def edit @supplier = Supplier.find(params[:id]) @supplier.build_address if @supplier.address.nil? end def allowed_params params.require(:supplier).permit(:name,address_attributes: [:first_name,:country_id]) end end %fieldset#admin-supplier-names.span-12 %label Name = form.text_field :name %label Email = form.text_field :email = form.fields_for :address do |address_fields| %li= address_fields.text_field :first_name,:include_blank => true 但是,如果您的供应商可以拥有多个地址,请在适用的情况下更新您的代码: class Supplier < ActiveRecord::Base have_many :addresses,dependent: :destroy accepts_nested_attributes_for :addresses end class Address < ActiveRecord::Base belongs_to :addressable,polymorphic: true end class SuppliersController < ApplicationController def new @supplier = Supplier.new 3.times { @supplier.addresses.build } #setup as many as you want end def edit @supplier = Supplier.find(params[:id]) addresses_count = (3 - @supplier.addresses.count) addresses_count.times { @supplier.addresses.build } end def allowed_params params.require(:supplier).permit(:name,addresses_attributes: [:first_name,:country_id]) end end %fieldset#admin-supplier-names.span-12 %label Name = form.text_field :name %label Email = form.text_field :email = form.fields_for :addresses do |address_fields| %li= address_fields.text_field :first_name,:include_blank => true 有关详细信息,请参阅StrongParameters,FormBuilder. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Cocos2d-x 3.x RenderTexture渲染纹理源码分析
- ruby-on-rails – 未定义的方法裁剪!在导轨上使
- AJAX不是在调用PHP吗?
- uitableview – 如何获取swift中所选行的textLab
- cocos2dx_lua 2.x 版本 与 3.x 版本 区别 总结
- c – 如何以大块字母打印“HELLO”,其中每个字母
- postgresql – Postgres:丢失或错误的pg_hba.co
- xcode – Swift UIAlertController获取文本字段文
- Flash上传出现IO Error #2038的错误解决方法
- ruby-on-rails – Passenger独立工作,但Apache的
热点阅读