Problema al usar find(:all, :condition....)

TEngo el siguiente codigo en el controller de Producto:

def show
if params[:codigo]==“1”
@producto = Producto.find(:all, :conditions =>
‘codigo=’+params[:id].to_s)
if ! @producto
@producto = Producto.find(@producto)
else
@producto = Producto.new
end
else
@producto = Producto.find(params[:id])
end
#if params[:cantidad]
@detalle=Detalle.new
@detalle.cantidad = params[:cantidad]
if @detalle.cantidad?
@detalle.p_unitario = @producto.neto_unidad
@detalle.sub_total = (@detalle.cantidad *
@detalle.p_unitario).round
if @detalle.p_unitario > 0
@detalle.sub_total = params[:sub_total] if @detalle.p_unitario
== 0
@detalle.dscto = (params[:descuento].to_f / 100 *
@detalle.sub_total
).round
@detalle.total = @detalle.sub_total - @detalle.dscto
else
@detalle.p_unitario = @producto.neto_unidad
@detalle.sub_total = 0
@detalle.dscto = 0
@detalle.total = 0
end
#end

respond_to do |format|
  format.html # show.rhtml
  format.xml  { render :xml => @producto.to_xml }
  format.js     # show.rjs
end

end

Cuando params[:codigo]==1 se cae en la linea:

@detalle.p_unitario = @producto.neto_unidad

Y estoy seguro que el producto existe pues ejecute la consulta que
aparece
en el log

SELECT * FROM productos WHERE (codigo=2003500);

en el log tambien dice que en esa linea neto_unidada no esta definido .

aca va parte del log

Processing ProductosController#show (for 128.1.128.2 at 2007-09-11
22:50:30)
[POST]
Session ID: f978f506b97daf2f1b2b8090b4dc7dfb
Parameters: {“codigo”=>“1”, “action”=>“show”, “id”=>“2003500”,
“cantidad”=>“100”, “controller”=>“productos”, “descuento”=>“10”,
“sub_total”=>“1000000”}
e[4;35;1mSQL (0.000000)e[0m e[0mSET NAMES 'UTF8’e[0m
e[4;36;1mUsuario Columns (0.016000)e[0m e[0;1mSHOW FIELDS FROM
usuariose[0m
e[4;35;1mUsuario Load (0.000000)e[0m e[0mSELECT * FROM usuarios
WHERE
(usuarios.id = 1) LIMIT 1e[0m
e[4;36;1mProducto Load (0.000000)e[0m e[0;1mSELECT * FROM productos
WHERE (codigo=2003500) e[0m
e[4;35;1mDetalle Columns (0.000000)e[0m e[0mSHOW FIELDS FROM
detallese[0m

NoMethodError (undefined method neto_unidad' for #<Array:0x48d8f48>): /app/controllers/productos_controller.rb:28:inshow’
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:1095:in
send' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:1095:inperform_action_without_filters’

gracias

al mirara esta parte del log cuando usa params[:codigo]=“0”

Processing ProductosController#show (for 128.1.128.2 at 2007-09-11
22:50:21)
[POST]
Session ID: f978f506b97daf2f1b2b8090b4dc7dfb
Parameters: {“codigo”=>“0”, “action”=>“show”, “id”=>“1”,
“cantidad”=>“100”, “controller”=>“productos”, “descuento”=>“10”,
“sub_total”=>""}
e[4;35;1mSQL (0.000000)e[0m e[0mSET NAMES 'UTF8’e[0m
e[4;36;1mUsuario Columns (0.000000)e[0m e[0;1mSHOW FIELDS FROM
usuariose[0m
e[4;35;1mUsuario Load (0.000000)e[0m e[0mSELECT * FROM usuarios
WHERE
(usuarios.id = 1) LIMIT 1e[0m
e[4;36;1mProducto Columns (0.000000)e[0m e[0;1mSHOW FIELDS FROM
productose[0m
e[4;35;1mProducto Load (0.000000)e[0m e[0mSELECT * FROM productos
WHERE
(productos.id = 1) e[0m
e[4;36;1mDetalle Columns (0.000000)e[0m e[0;1mSHOW FIELDS FROM
detallese[0m
Rendering productos/show.rjs
Completed in 0.23400 (4 reqs/sec) | Rendering: 0.00000 (0%) | DB:
0.00000(0%) | 200 OK [
http://128.1.128.195/productos/show]

se ve que hace un SHOW FIELDS FROM productos

que no hace en el caso que indique, de que depende eso?

Atte.
Angel Mauricio Pino G.

El día 11/09/07, Angel Mauricio Pino Gonzalez <
[email protected]> escribió:

Ya el problema es que me regresa un arreglo, use el parametrpo :first en
el
find y se arreglo.

gracias y mis disculpas.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs