2

ネストされた属性を持つフォームを作成しようとしています。私のビューでは、デフォルトでフィールドの 1 つのグループを pessoaに、もう 1 つviews/pedidos/new.html.erbのフィールドをprodutoに表示したいと考えています。私のPedidosControllerでは、私が使用pessoa = @pedido.build_pessoaしたものは完全に機能しますproduto = @pedido.build_produtosundefined method 'build_produtos' for #<Pedido id: nil, created_at: nil, updated_at: nil>

これが私のモデルと私のコントローラーです(足場を使用して生成しました)

class Pedido < ActiveRecord::Base
  attr_accessible :pessoa_attributes, :produtos_attributes

  has_one :pessoa
  has_many :produtos

  accepts_nested_attributes_for :pessoa, :produtos, allow_destroy: true
end

class Pessoa < ActiveRecord::Base
  attr_accessible :email, :nome, :telefone

  belongs_to :pedido
end

class Produto < ActiveRecord::Base
  attr_accessible :nome, :quantidade

  belongs_to :pedido
end

class PedidosController < ApplicationController

  def new
    @pedido = Pedido.new
    1.times do
      pessoa = @pedido.build_pessoa
      produto = @pedido.build_produtos
    end

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @pedido }
    end
  end
end
4

1 に答える 1

2

関係が の場合、次のhas_manyように構築します。@pedido.produtos.build

has_oneあなたがやったように、build_[association].

ちょっと面倒ですが、何が起こっているのかがわかれば簡単です。

于 2012-10-26T22:13:24.713 に答える