Forum: Rails-ES Problema con json y rails 2.1.0

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Omar J. (Guest)
on 2008-10-18 03:50
(Received via mailing list)
No entiendo que pasa tengo la misma aplicacion en mi laptop con win
vista
basic  y en el hosting que es un linuxel problema es que
si hago esto
p = Producto.find(:all)
p.to_json

en mi maquina me da
irb(main):004:0> d.to_json
=> "[{\"creado\": \"2008/10/10\", \"marca_id\": 1, \"descripcion\":
\"Tele
sony
32 pulgadas\", \"dato_padre\": null, \"id\": 1, \"modelo\": \"S32\",
\"tipo_de_p
roducto_id\": 1}, {\"creado\": \"2008/10/10\", \"marca_id\": 1,
\"descripcion\":
 \"Televisor sony 42\\\"\", \"dato_padre\": null, \"id\": 2, \"modelo\":
\"S42\"
, \"tipo_de_producto_id\": 1}, {\"creado\": \"2008/10/10\",
\"marca_id\": 1,
\"d
escripcion\": \"Televisor plasma 32 pulgadas sony\", \"dato_padre\":
null,
\"id\
": 3, \"modelo\": \"S32B3\", \"tipo_de_producto_id\": 1}, {\"creado\":
\"2008/10
/10\", \"marca_id\": 2, \"descripcion\": \"Tele de 32\\\" samsung\",
\"dato_padr
e\": null, \"id\": 4, \"modelo\": \"SA32X3\", \"tipo_de_producto_id\":
1},
{\"cr
eado\": \"2008/10/13\", \"marca_id\": 6, \"descripcion\": \"Televisor de
42\\\"
Full hd sony\", \"dato_padre\": null, \"id\": 5, \"modelo\": \"S42SP\",
\"tipo_d
e_producto_id\": 3}]"

y en el servidor me da
irb(main):005:0> d.to_json
=> "[{\"producto\": {\"creado\": \"2008-10-17\", \"marca_id\": 1,
\"descripcion\": \"Televisor lcd sony 32 pulgadas\", \"dato_padre\":
null,
\"id\": 1, \"modelo\": \"KDL-32XBR6\", \"tipo_de_producto_id\": 2}},
{\"producto\": {\"creado\": \"2008-10-17\", \"marca_id\": 2,
\"descripcion\": \"Television lcd 32\\\" sony bravia\", \"dato_padre\":
null, \"id\": 2, \"modelo\": \"KDL-32N4000 \", \"tipo_de_producto_id\":
2}}]"

simplificando seria si pusieramos algo como
Producto.find(:first).to_json(
servidor ---      {producto:{id:22}}
mi maquina -- {id:22}

el punto es que en el servidor le agrega el  "producto": { atributos }
no se porque crei que porque en mi lap tenia rails 2.0.2 y en el
servidor
2.1.0
segun yo instale 2.1.0 en mi maquina y le puse al environment que
ejecutase
ese
rails --version en ambas da lo mismo   2.1.0
pero sigue habiendo esa diferencia y me esta volviendo loco esta cosa =S

pues para el servidor seria
texto.evalJSON(); <-- funcion de prototype.js
texto[0].producto.modelo <--- KDL-32XBR6

mientras que en mi maquina y como tengo todo el codigo seria
texto.evalJSON();
texto[0].modelo  <-- KDL-32XBR6

alguna idea de que pueda estar pasando  o que pueda hacer ???
Omar J. (Guest)
on 2008-10-18 04:01
(Received via mailing list)
Me auto contesto pues todo un show para ver porque pasaba eso, me meti
hasta
la cocina revisando los rb de las gemas active support, etcpara llegar a
un
if por ahi en un metodo to_json en active record en el serializador lo
cual
me lleva a este archivito que agrega creo desde
la version 2.1.0 rails
el archivo es en config/initializers/new_rails_defaults.rb
en la linea
# Include Active Record class name as root for JSON serialized output.
ActiveRecord::Base.include_root_in_json = true

donde tenemos que cambiar eso a false y con eso estuvo se tendra como
antes
el resultado

el if era
if include_root_in_json

curioso que minutos despues de desesperarme sin encontrar la solucion
mande
este mail y poco despues encontre la solucion =S
si alguien le sirve me alegra, espero no haber molestado.


El 17 de octubre de 2008 18:49, Omar J.
<removed_email_address@domain.invalid>escribió:
Ceritium (Guest)
on 2008-10-20 21:08
(Received via mailing list)
Yo me di cuenta de ese comportamiento cuando vi que me dejaban de
funcionar
un par de cosas, pero tampoco investigué mucho, simplemente lo usé como
venía.

Gracias por tu autorespuesta :P
Omar J. (Guest)
on 2008-10-20 21:33
(Received via mailing list)
es decir cambiaste el codigo para adecuarlo hacia el  {className:{id:3}}
?mm
pues yo me di cuenta que lo ponia asi y pensaba en simplemente cambiar
el
codigo adecuandolo a eso y ya pero
lo que me preocupaba eran 2 cosas
1.-  que en mi computadora lo ponia de otra forma
2.- que no me gusta poner parches de "errores" sin saber 3 cosas ( que
error
es, como se soluciona y porque pasa eso) y en este caso
creia saber la 1 y la 2 pero no la 3 :P

2008/10/20 Ceritium <removed_email_address@domain.invalid>
This topic is locked and can not be replied to.