2010-03-03 10 views
12

Tengo problemas con accept_nested_attributes_for en una relación has_one.accept_nested_attributes_for no funciona adecuadamente para la relación has_one

Los modelos: Compra y venta.

class Purchase < ActiveRecord::Base 
    has_one :sale, :dependent => :destroy 
    accepts_nested_attributes_for :sale 
end 

class Sale < ActiveRecord::Base 
    belongs_to :purchase 
end 

En el controlador/nueva acción:

@purchase = Purchase.new(
    :club_id => @club.id, 
    :subcategory_id => subcategory.id 
) 

En la vista (HAML):

- form_for(@purchase) do |f| 
    # some fields for purchase 
    - f.fields_for :sale do |s| 
    = s.text_field :amount, :size => 6 
    # and so on 

PROBLEMA: esta realidad no hacen ningún cuadros de entrada a la venta en mi opinión . Los campos de compra son correctos, pero los campos de venta no aparecen.

Si añado esta línea al controlador:

@purchase.sale.build 

consigo este error:

undefined method `build' for nil:NilClass 

Para hacer las cosas más extrañas, si cambio el tipo de asociación a has_many en lugar de has_one, por lo tanto creando:

class Purchase < ActiveRecord::Base 
    has_many :sales, :dependent => :destroy 
    accepts_nested_attributes_for :sales 
end 

Todo comienza a funcionar bien - los campos de venta comienzan a aparecer en mi opinión, @ purchase.sales.build no devuelve un error, y así sucesivamente. Por supuesto, esto realmente no me ayuda, ya que se supone que es has_many, no has_one.

¿Alguien puede arrojar algo de luz sobre esta situación?

Respuesta

Cuestiones relacionadas