Problema con un collection_select en una consulta con join

Tengo productos, y algunos de esos productos tiene un subproducto.

Modelo:
Producto --------> has_one :subproducto
Subproducto —> belongs_to :producto

En la acción NEW de un controlador tengo esto:
@subproductos = Subproducto.find :all, :include => :producto

Hasta aqui lo hace bien, porque la consulta parece que la genera bien.

Y en la vista quiero formar un select para poder elegir entre los
subproductos. Para ello uso el helper collection_select.
Mi problema es que quiero mostrar el campo ‘nombre’ de Producto y quiero
usar el valor ‘id’ del Subproducto en el select.
Algo parecido a esto:
<%= f.collection_select :pro, @subproductos, :id, :nombre %>

Pero no me funciona. Porque no me reconoce el simbolo ‘:nombre’, que
pertenece a Producto.

¿Alguna idea?

On 8/9/07, Paco García [email protected] wrote:

Y en la vista quiero formar un select para poder elegir entre los
subproductos. Para ello uso el helper collection_select.
Mi problema es que quiero mostrar el campo ‘nombre’ de Producto y quiero
usar el valor ‘id’ del Subproducto en el select.
Algo parecido a esto:
<%= f.collection_select :pro, @subproductos, :id, :nombre %>

Pero no me funciona. Porque no me reconoce el simbolo ‘:nombre’, que
pertenece a Producto.

¿O sea que Subproducto debería heredar de Producto?

Si no es así, quizás te sirva esto, que a mí a veces me viene bien y
es una buena forma de encapsular lógica. Si la regla es “los
subproductos toman su nombre del producto padre”, entonces:

class Subproducto < AR::Base
belongs_to :producto

def nombre
producto.nombre if producto
end
end