Forum: Rails-ES (no subject)

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.
81d591bf78ee92fab9a5abda19b6fe9a?d=identicon&s=25 Fernando González Macías (Guest)
on 2008-10-06 18:18
(Received via mailing list)
Tengo dos modelos Descargas y Publicacion. Aparte tengo un modelo User
para registrar los logoneos en la pagina y las descargas realizadas.



En el fichero new.html.erb tengo el siguiente código que me genera una
lista desplegable con todas las publicaciones existentes, para
seleccionar.





<% @selected = @descarga.publicacion.id if @descarga.publicacion %>

<select name ="descarga[publicacion]">

<%= options_from_collection_for_select( Publicacion.find(:all), :id,
:nombre, @selected) %>

</select>





En el método create del fichero descargas_controller.rb tengo el
siguiente código:





def create

    @descarga = Descarga.new(params[:descarga])

    @publicacion = Publicacion.find(params[:publicacion])

    @descarga.publicacion_id = @publicacion



    respond_to do |format|

      if @descarga.save

        flash[:notice] = 'El registro se guardó correctamente.'

        format.html { redirect_to(@descarga) }

        format.xml  { render :xml => @descarga, :status => :created,
:location => @descarga }

      else

        format.html { render :action => "new" }

        format.xml  { render :xml => @descarga.errors, :status =>
:unprocessable_entity }

      end

    end

  end







Al entrar en http://localhost.3000/descargas/new






ActiveRecord::AssociationTypeMismatch in DescargasController#create

Publicacion(#38299390) expected, got String(#21132310)







Veo que estoy obteniendo un  String, y esté esperando otra cosa, pero no
veo el error.



Perdón, si es muy evidente, pero estoy empezando con esto de RoR, y los
comienzos siempre son difíciles.




Saludos y gracias.....







Fernando González Macías

fgonzalez @ grupojoly.com
2936ff433c99bd3dc0d9e6a29f3ba163?d=identicon&s=25 Omar Jimenez (Guest)
on 2008-10-06 18:25
(Received via mailing list)
prueba tratando en vez de@descarga.publicacion_id = @publicacion

poner
@descarga.publicacion = @publicacion  ( esto suponiendo que en tu modelo
Descarga tienes belongs_to :publicacion o algo similar
o tambien
@descarga.publicacion_id = @publicacion.id

porque como lo pones se supone que @publicacion deberia tomar el id y
ponertelo aunque no se bien que reglas siga porque en algunos metodos si
funciona por ejemplo un redirect_to :action => :show, :id => @descarga
pero
en otros no  y mejor poner @descarga.id

El 6 de octubre de 2008 11:15, Fernando González Macías <
fgonzalez@diariodecadiz.com> escribió:
7223c62b7310e164eb79c740188abbda?d=identicon&s=25 Xavier Noria (fxn)
on 2008-10-06 18:26
(Received via mailing list)
2008/10/6 Fernando González Macías <fgonzalez@diariodecadiz.com>:

> <% @selected = @descarga.publicacion.id if @descarga.publicacion %>
>
> <select name ="descarga[publicacion]">
>
> <%= options_from_collection_for_select( Publicacion.find(:all), :id,
> :nombre, @selected) %>
>
> </select>

Ese codigo es sospechoso. Lo normal seria que en #new instanciaras
@descarga y usaras los helpers normales para formularios. El campo no
debe llamarse "descarga[publicacion]" sino "descarga[publicacion_id]",
y los helpers generan ese nombre automaticamente, asi como seleccionar
el asignado si no es nil.

Con el nombre actual, al usar mass-assignment estas invocando al
setter #publicacion= que espera un objeto de tipo Publicacion en lugar
de una cadena con el identificador dentro. De ahi el error.
81d591bf78ee92fab9a5abda19b6fe9a?d=identicon&s=25 Fernando González Macías (Guest)
on 2008-10-06 19:12
(Received via mailing list)
He probado ambas opciones y me sigue saliendo lo mismo. Os pongo las
relaciones por si os diera alguna pista.



Tengo que seguir mirando



class Descarga < ActiveRecord::Base

  has_one :publicacion

end



class Publicacion < ActiveRecord::Base

  has_many  :descargas

end



Saludos



Fernando González Macías

fgonzalez @ grupojoly.com



________________________________

De: ror-es-bounces@lists.simplelogica.net
[mailto:ror-es-bounces@lists.simplelogica.net] En nombre de Omar Jimenez
Enviado el: lunes, 06 de octubre de 2008 18:24
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano
Asunto: Re: [Ror-es] (no subject)



prueba tratando en vez de

@descarga.publicacion_id = @publicacion



poner

@descarga.publicacion = @publicacion  ( esto suponiendo que en tu modelo
Descarga tienes belongs_to :publicacion o algo similar

o tambien

@descarga.publicacion_id = @publicacion.id



porque como lo pones se supone que @publicacion deberia tomar el id y
ponertelo aunque no se bien que reglas siga porque en algunos metodos si
funciona por ejemplo un redirect_to :action => :show, :id => @descarga
pero en otros no  y mejor poner @descarga.id



El 6 de octubre de 2008 11:15, Fernando González Macías
<fgonzalez@diariodecadiz.com> escribió:



Tengo dos modelos Descargas y Publicacion. Aparte tengo un modelo User
para registrar los logoneos en la pagina y las descargas realizadas.



En el fichero new.html.erb tengo el siguiente código que me genera una
lista desplegable con todas las publicaciones existentes, para
seleccionar.





<% @selected = @descarga.publicacion.id if @descarga.publicacion %>

<select name ="descarga[publicacion]">

<%= options_from_collection_for_select( Publicacion.find(:all), :id,
:nombre, @selected) %>

</select>





En el método create del fichero descargas_controller.rb tengo el
siguiente código:





def create

    @descarga = Descarga.new(params[:descarga])

    @publicacion = Publicacion.find(params[:publicacion])

    @descarga.publicacion_id = @publicacion



    respond_to do |format|

      if @descarga.save

        flash[:notice] = 'El registro se guardó correctamente.'

        format.html { redirect_to(@descarga) }

        format.xml  { render :xml => @descarga, :status => :created,
:location => @descarga }

      else

        format.html { render :action => "new" }

        format.xml  { render :xml => @descarga.errors, :status =>
:unprocessable_entity }

      end

    end

  end







Al entrar en http://localhost.3000/descargas/new






ActiveRecord::AssociationTypeMismatch in DescargasController#create

Publicacion(#38299390) expected, got String(#21132310)







Veo que estoy obteniendo un  String, y esté esperando otra cosa, pero no
veo el error.



Perdón, si es muy evidente, pero estoy empezando con esto de RoR, y los
comienzos siempre son difíciles.




Saludos y gracias.....







Fernando González Macías

fgonzalez @ grupojoly.com
2936ff433c99bd3dc0d9e6a29f3ba163?d=identicon&s=25 Omar Jimenez (Guest)
on 2008-10-06 19:23
(Received via mailing list)
mm luego me confundo con las relaciones pero que no es belongs to en
Descarga ?corrijanme si me equivoco porfas

http://api.rubyonrails.com/classes/ActiveRecord/As...
revisa la parte de "Is it a belongs_to or has_one association?"

class Descarga < ActiveRecord::Base

  belongs_to :publicacion

end
El 6 de octubre de 2008 12:08, Fernando González Macías <
fgonzalez@diariodecadiz.com> escribió:
81d591bf78ee92fab9a5abda19b6fe9a?d=identicon&s=25 Fernando González Macías (Guest)
on 2008-10-06 19:45
(Received via mailing list)
Tengo un modelo de Publicaciones  y un modelo que registra las descarga
de dichas publicaciones.



Tal y como viene en la documentación que me facilitas, creo que tienes
razón, y debe de ser belongs_to, ya que la estructura de mi tabla
descargas es:



Id

publicacion_id : integer

fecha: date

email_id :string












Is it a belongs_to
<http://api.rubyonrails.com/classes/ActiveRecord/As...
or has_one
<http://api.rubyonrails.com/classes/ActiveRecord/As...
association?


Both express a 1-1 relationship. The difference is mostly where to place
the foreign key, which goes on the table for the class declaring the
belongs_to
<http://api.rubyonrails.com/classes/ActiveRecord/As...
relationship. Example:

  class User < ActiveRecord::Base
    # I reference an account.
    belongs_to :account
  end

  class Account < ActiveRecord::Base
    # One user references me.
    has_one :user
  end

The tables for these classes could look something like:

  CREATE TABLE users (
    id int(11) NOT NULL auto_increment,
    account_id int(11) default NULL,
    name varchar default NULL,
    PRIMARY KEY  (id)
  )

  CREATE TABLE accounts (
    id int(11) NOT NULL auto_increment,
    name varchar default NULL,
    PRIMARY KEY  (id)
  )









Aún así, me sigue sin funcionar.







Saludos y gracias por el interés.













Fernando González Macías

fgonzalez @ grupojoly.com



________________________________

De: ror-es-bounces@lists.simplelogica.net
[mailto:ror-es-bounces@lists.simplelogica.net] En nombre de Omar Jimenez
Enviado el: lunes, 06 de octubre de 2008 19:22
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano
Asunto: Re: [Ror-es] (no subject)



mm luego me confundo con las relaciones pero que no es belongs to en
Descarga ?

corrijanme si me equivoco porfas



http://api.rubyonrails.com/classes/ActiveRecord/As...

revisa la parte de "Is it a belongs_to or has_one association?"



class Descarga < ActiveRecord::Base

  belongs_to :publicacion

end

El 6 de octubre de 2008 12:08, Fernando González Macías
<fgonzalez@diariodecadiz.com> escribió:

He probado ambas opciones y me sigue saliendo lo mismo. Os pongo las
relaciones por si os diera alguna pista.



Tengo que seguir mirando



class Descarga < ActiveRecord::Base

  has_one :publicacion

end



class Publicacion < ActiveRecord::Base

  has_many  :descargas

end



Saludos



Fernando González Macías

fgonzalez @ grupojoly.com



________________________________

De: ror-es-bounces@lists.simplelogica.net
[mailto:ror-es-bounces@lists.simplelogica.net] En nombre de Omar Jimenez
Enviado el: lunes, 06 de octubre de 2008 18:24
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano
Asunto: Re: [Ror-es] (no subject)



prueba tratando en vez de

@descarga.publicacion_id = @publicacion



poner

@descarga.publicacion = @publicacion  ( esto suponiendo que en tu modelo
Descarga tienes belongs_to :publicacion o algo similar

o tambien

@descarga.publicacion_id = @publicacion.id



porque como lo pones se supone que @publicacion deberia tomar el id y
ponertelo aunque no se bien que reglas siga porque en algunos metodos si
funciona por ejemplo un redirect_to :action => :show, :id => @descarga
pero en otros no  y mejor poner @descarga.id



El 6 de octubre de 2008 11:15, Fernando González Macías
<fgonzalez@diariodecadiz.com> escribió:



Tengo dos modelos Descargas y Publicacion. Aparte tengo un modelo User
para registrar los logoneos en la pagina y las descargas realizadas.



En el fichero new.html.erb tengo el siguiente código que me genera una
lista desplegable con todas las publicaciones existentes, para
seleccionar.





<% @selected = @descarga.publicacion.id if @descarga.publicacion %>

<select name ="descarga[publicacion]">

<%= options_from_collection_for_select( Publicacion.find(:all), :id,
:nombre, @selected) %>

</select>





En el método create del fichero descargas_controller.rb tengo el
siguiente código:





def create

    @descarga = Descarga.new(params[:descarga])

    @publicacion = Publicacion.find(params[:publicacion])

    @descarga.publicacion_id = @publicacion



    respond_to do |format|

      if @descarga.save

        flash[:notice] = 'El registro se guardó correctamente.'

        format.html { redirect_to(@descarga) }

        format.xml  { render :xml => @descarga, :status => :created,
:location => @descarga }

      else

        format.html { render :action => "new" }

        format.xml  { render :xml => @descarga.errors, :status =>
:unprocessable_entity }

      end

    end

  end







Al entrar en http://localhost.3000/descargas/new






ActiveRecord::AssociationTypeMismatch in DescargasController#create

Publicacion(#38299390) expected, got String(#21132310)







Veo que estoy obteniendo un  String, y esté esperando otra cosa, pero no
veo el error.



Perdón, si es muy evidente, pero estoy empezando con esto de RoR, y los
comienzos siempre son difíciles.




Saludos y gracias.....







Fernando González Macías

fgonzalez @ grupojoly.com




_______________________________________________
Ror-es mailing list
Ror-es@lists.simplelogica.net
http://lists.simplelogica.net/mailman/listinfo/ror-es
2936ff433c99bd3dc0d9e6a29f3ba163?d=identicon&s=25 Omar Jimenez (Guest)
on 2008-10-06 20:00
(Received via mailing list)
el error no a cambiado ?puedes ponernos un poco de mas info ? la linea
del
error o algo mas

El 6 de octubre de 2008 12:42, Fernando González Macías <
fgonzalez@diariodecadiz.com> escribió:
5c15703984caa012845b3cea129da936?d=identicon&s=25 Manuel González Noriega (Guest)
on 2008-10-07 00:27
(Received via mailing list)
2008/10/6 Fernando González Macías <fgonzalez@diariodecadiz.com>

>  Tengo un modelo de Publicaciones  y un modelo que registra las descarga
> de dichas publicaciones.
>
>
>
Hola Fernando,

aparte de rogar que se tenga más cuidado en el envío de los mails para
no
hacer cosas como empezar (y continuar) hilos sin subject, te pediría
también
que proporciones toda la información necesaria para que te puedan
ayudar. No
se puede resumir un problema con un "Aún así, me sigue sin funcionar." y
pretender que los demás pierdan tiempo preguntándote cosas obvias como
qué
error tienes, si es distinto al anterior, trazas del log ..

En cualquier caso, ¿has entendido y seguido las indicaciones de Xavier
aparte de corregir lo que te ha dicho Omar?
81d591bf78ee92fab9a5abda19b6fe9a?d=identicon&s=25 Fernando González Macías (Guest)
on 2008-10-07 09:34
(Received via mailing list)
Attachment: winmail.dat (6 KB)
Hola Manuel.

   Ante todo, pedir disculpas por la forma inapropiada de enviar los
correos. Intentaré la próxima vez tener más cuidado.

Respecto a lo que preguntas, he corregido lo que me ha dicho Omar, pero
de Xavier no he recibido ningún correo al respecto.

Por otra parte, preguntar si existiera la posibilidad de generar una
lista de correo más newbie. El nivel de muchos de vosotros es muy alto,
y creo que para personas que empiezan con RoR, "un poco intimidatorio"
;--)))))))))))

Y entiendo perfectamente que perder el tiempo, leyendo y respondiendo a
correos, cuyas soluciones a lo mejor son muy evidentes, no sea la opción
más aconsejable.



Saludos y gracias por todo.




________________________________

De: ror-es-bounces@lists.simplelogica.net en nombre de Manuel González
Noriega
Enviado el: mar 10/7/2008 00:27
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano
Asunto: Re: [Ror-es] (no subject)


2008/10/6 Fernando González Macías <fgonzalez@diariodecadiz.com>


  Tengo un modelo de Publicaciones  y un modelo que registra las
descarga de dichas publicaciones.



Hola Fernando,

aparte de rogar que se tenga más cuidado en el envío de los mails para
no hacer cosas como empezar (y continuar) hilos sin subject, te pediría
también que proporciones toda la información necesaria para que te
puedan ayudar. No se puede resumir un problema con un "Aún así, me sigue
sin funcionar." y pretender que los demás pierdan tiempo preguntándote
cosas obvias como qué error tienes, si es distinto al anterior, trazas
del log ..

En cualquier caso, ¿has entendido y seguido las indicaciones de Xavier
aparte de corregir lo que te ha dicho Omar?
5c15703984caa012845b3cea129da936?d=identicon&s=25 Manuel González Noriega (Guest)
on 2008-10-07 10:34
(Received via mailing list)
2008/10/7 Fernando González Macías <fgonzalez@diariodecadiz.com>

> para personas que empiezan con RoR, "un poco intimidatorio" ;--)))))))))))
>
> Y entiendo perfectamente que perder el tiempo, leyendo y respondiendo a
> correos, cuyas soluciones a lo mejor son muy evidentes, no sea la opción más
> aconsejable.
>
>
Hola Fernando,

gracias por entender mis palabras sobre los mensajes.

Respecto a la lista, la verdad es que no estoy de acuerdo :) Me parece
tremendamente newbie-friendly. Se suelen contestar todo tipo de emails,
sin
importar el nivel de la cuestión. El tuyo, por ejemplo, ha tenido varias
respuestas de Omar y de Xavier, señalándote los problemas con tu código
y
ayudándote a resolverlos. Te invito a que eches un vistazo a los
archivos y
veas que esto es la regla y no la excepción, y que compruebes que, de
hecho,
los usuarios más expertos y con más nivel son los que más participan y
responden a casi todos los hilos.

El número de trolls en la lista está perfectamente controlado y
establecido
en uno, que soy yo, y mi monomanía se reduce a que se trate con el
máximo
respeto a los integrantes de la lista, y especialmente que los que
preguntan
(toman), respeten exquisitamente a los que responden (dan). De ahí mi
persecución implacable a los que no ponen nada de su parte, no
investigan,
buscan en Google, explican los problemas con claridad, etc. y en general
no
ayudan a que se les ayude.

Otra regla secundaria, relacionada mucho con la anterior, es no llenar
la
lista de ruido preguntando cosas que salen en cualquier artículo
introductorio ("cómo se instala Rails", "cómo se relacionan dos
modelos",
"cómo se hace un select con Active Record" ...). Una cosa es ayudar al
novato y otra sería ayudar al que tiene la manía de saltarse la mínima
formación requerida y pretende sustituir dos horas de leer un artículo
por
una tutoría interactiva gratis.

Me tendrías que explicar qué esperas exactamente de una lista "newbie",
y a
ser posible poniendo ejemplos de qué te esperas de esa lista que no te
dé
esta.


Ah, y revisa tu correo, que sí hay una respuesta de Xavier que soluciona
tu
problema :)
This topic is locked and can not be replied to.