【发布时间】:2016-08-15 09:05:13
【问题描述】:
我正在尝试获取一个嵌套属性表单来检测已经加载到数据库中的值,任何人都可以看到这段代码有什么问题
控制器
def edit
@merchant = Merchant.find(params[:id])
@states = State.form_selector
@merchant.build_address if @merchant.address1.nil?
@merchant.build_account if @merchant.bsb.nil?
@products = Product.all
end
查看
= form.fields_for :address do |address_fields|
= address_fields.hidden_field :address_type_id, value: 4
= address_fields.hidden_field :default, value: true
.mdl-textfield.mdl-js-textfield.mdl-textfield--floating-label.mdl-cell.mdl-cell--12-col
= address_fields.text_field :address1, class: 'mdl-textfield__input'
= address_fields.label :address1, class: 'mdl-textfield__label'
.mdl-textfield.mdl-js-textfield.mdl-textfield--floating-label.mdl-cell.mdl-cell--12-col
= address_fields.text_field :address2, class: 'mdl-textfield__input'
= address_fields.label :address2, class: 'mdl-textfield__label'
.mdl-textfield.mdl-js-textfield.mdl-textfield--floating-label.mdl-cell.mdl-cell--6-col
= address_fields.text_field :city, class: 'mdl-textfield__input'
= address_fields.label :city, class: 'mdl-textfield__label'
.mdl-textfield.mdl-js-textfield.mdl-textfield--floating-label.mdl-cell.mdl-cell--2-col
= address_fields.text_field :zip_code, class: 'mdl-textfield__input', :pattern => '^(0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2})$'
= address_fields.label :zip_code, class: 'mdl-textfield__label'
%span.mdl-textfield__error= t('.postcode_error')
.mdl-textfield.mdl-js-textfield.mdl-textfield--floating-label.mdl-cell.mdl-cell--3-col
= address_fields.select :state_id, @states, :include_blank => true
= address_fields.label :state_id, class: 'mdl-textfield__label'
【问题讨论】:
-
您的 Merchant 模型中有
accepts_nested_attributes_for :address吗? -
是的,数据被提交到数据库,但是当你去编辑那个元素时,它就像什么都没有被保存过
-
但是它叫address1还是address?我猜你把他们弄糊涂了:
@merchant.build_address if @merchant.address1.nil? -
字段为address1,模型为address
标签: ruby-on-rails associations nested-forms nested-attributes