首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关联字段未从数据库加载值

关联字段未从数据库加载值
EN

Stack Overflow用户
提问于 2016-08-15 17:05:13
回答 1查看 34关注 0票数 0

我正在尝试获取一个嵌套属性表单来检测已经加载到数据库中的值,有人能看到这段代码的错误所在吗

控制器

代码语言:javascript
复制
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

视图

代码语言:javascript
复制
= 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'
EN

回答 1

Stack Overflow用户

发布于 2016-08-15 17:23:15

@merchant.address返回一个集合,即使为空,它也会返回一个数组。

代码语言:javascript
复制
@merchant.address # []   
@merchant.address.nil?   # false
@merchant.address.blank? # true

def edit
  @merchant = Merchant.find(params[:id])
  @states = State.form_selecto
  @merchant.build_address if @merchant.address.blank?
  @merchant.build_account if @merchant.bsb.blank?
  @products = Product.all
end

但我更喜欢在视图中使用这种方式。因为这样就删除了很多控制器操作的代码#edit #new #update #create

代码语言:javascript
复制
view
- form.object.build_address if form.object.blank?
= form.fields_for :address do |address_fields|
    = address_fields.hidden_field :address_type_id, value: 4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38952229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档