# Problema con parÃ¡metros en collection\_select (No novato)

**URL:** <https://www.ruby-forum.com/t/problema-con-para-metros-en-collection-select-no-novato/194394>\
**Category:** Rails\
**Created:** [September 3, 2010, 5:03pm UTC](https://www.ruby-forum.com/t/problema-con-para-metros-en-collection-select-no-novato/194394 "2010-09-03T17:03:39Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![evaldo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/7ab992/32.png) [@evaldo](https://www.ruby-forum.com/u/evaldo)\
**Post date:** [September 3, 2010, 5:03pm UTC](https://www.ruby-forum.com/t/problema-con-para-metros-en-collection-select-no-novato/194394/1 "2010-09-03T17:03:39Z")

</div>

Hola a tod@s,

Les cuento… Tengo lo siguiente en aplicaciÃ³n:

Una pÃ¡gina donde esta mi modelo docencia que a su vez le voy agregando  
todos los dictados de carreras:

 \<% f.fields\_for :dictados do |dictado\_form| %\> \<%= render :partial =\> 'dictado', :locals =\> { :f =\> dictado\_form } %\> \<% end %\> \<%= add\_child\_link "Agregar un dictado de carrera", f, :dictados %\> 

En el partial de dictado carrera tengo lo siguiente:

\<%= render :partial =\> ‘./shared/carreras’ %\>

Y el partial de carrera tiene lo siguiente:

\<%= collection\_select(@mcarrera.to\_s, “codcarrera”, Carrera.find(:all,  
:order=\>“nombre”), :codcarrera, :nombre,  
{:prompt =\> “”, :selected =\> @codcarrera.to\_i}) %\>

Esto es porque una de las cosas que quiero saber es en que carrera diÃ³  
clases el docente. Ahora, me funciona todo bien salvÃ³ que no va  
correctamente el dato de codcarrera por POST.

Se preguntarÃ¡n porque ‘@mcarrera’… Porque en otras vistas uso el mismo  
partial y ese ‘@mcarrera’ lo seteo con el nombre del modelo para que el  
datos de codcarrera vaya por el POST asociado al modelo y se guarde de  
una.

En fin, lo que tendrÃ­a que lograr al ver el cÃ³digo html es:  
‘docencia[dictados\_attributes][?][codcarrera]’ pero no se como hacerlo

Otro problema es que al editar como hago para que queden seleccionadas  
las carreras en caso de ser mÃ¡s de uno el dictado?

Espero haberme expresado bien y puedan ayudarme. Seguramente a alguiÃ©n  
le paso pero no encontrÃ© nada por acÃ¡. Gracias!

# PerdÃ³n por duplicar el post, puse el mismo en el foro en inglÃ©s y

ahora no sÃ© como eliminarlo… algÃºn moderador por ahÃ­?

---

<div class="post-metadata">

**Author:** ![evaldo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/7ab992/32.png) [@evaldo](https://www.ruby-forum.com/u/evaldo)\
**Post date:** [September 3, 2010, 6:03pm UTC](https://www.ruby-forum.com/t/problema-con-para-metros-en-collection-select-no-novato/194394/2 "2010-09-03T18:03:54Z")

</div>

Evaldo K. wrote:

> Hola a tod@s,
> 
> Les cuento… Tengo lo siguiente en aplicaciÃ³n:
> 
> Una pÃ¡gina donde esta mi modelo docencia que a su vez le voy agregando  
> todos los dictados de carreras:
> 
> \<% f.fields\_for :dictados do |dictado\_form| %\> \<%= render :partial =\> 'dictado', :locals =\> { :f =\> dictado\_form } %\> \<% end %\> \<%= add\_child\_link "Agregar un dictado de carrera", f, :dictados %\> 
> 
> En el partial de dictado carrera tengo lo siguiente:
> 
> \<%= render :partial =\> ‘./shared/carreras’ %\>
> 
> Y el partial de carrera tiene lo siguiente:
> 
> \<%= collection\_select(@mcarrera.to\_s, “codcarrera”, Carrera.find(:all,  
> :order=\>“nombre”), :codcarrera, :nombre,  
> {:prompt =\> “”, :selected =\> @codcarrera.to\_i}) %\>
> 
> Esto es porque una de las cosas que quiero saber es en que carrera diÃ³  
> clases el docente. Ahora, me funciona todo bien salvÃ³ que no va  
> correctamente el dato de codcarrera por POST.
> 
> Se preguntarÃ¡n porque ‘@mcarrera’… Porque en otras vistas uso el mismo  
> partial y ese ‘@mcarrera’ lo seteo con el nombre del modelo para que el  
> datos de codcarrera vaya por el POST asociado al modelo y se guarde de  
> una.
> 
> En fin, lo que tendrÃ­a que lograr al ver el cÃ³digo html es:  
> ‘docencia[dictados\_attributes][?][codcarrera]’ pero no se como hacerlo
> 
> Otro problema es que al editar como hago para que queden seleccionadas  
> las carreras en caso de ser mÃ¡s de uno el dictado?
> 
> Espero haberme expresado bien y puedan ayudarme. Seguramente a alguiÃ©n  
> le paso pero no encontrÃ© nada por acÃ¡. Gracias!
> 
> # PerdÃ³n por duplicar el post, puse el mismo en el foro en inglÃ©s y
> 
> ahora no sÃ© como eliminarlo… algÃºn moderador por ahÃ­?

Una de las cosas que se me ocurriÃ³ es setear @mcarrera con  
“nombre\_modelo[nombre\_del\_modelo\_nested\_form]”

Observando los parÃ¡metros que viajan por post (viendo los logs) llegÃ¡  
todo bien, pero igual no funciona. Me muestra el siguiente error (el 2  
corresponde al id de carrera):

undefined method `with\_indifferent\_access’ for “2”:String

Gracias!

---

<div class="post-metadata">

**Author:** ![evaldo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/7ab992/32.png) [@evaldo](https://www.ruby-forum.com/u/evaldo)\
**Post date:** [September 6, 2010, 4:50pm UTC](https://www.ruby-forum.com/t/problema-con-para-metros-en-collection-select-no-novato/194394/3 "2010-09-06T16:50:26Z")

</div>

Evaldo K. wrote:

> Evaldo K. wrote:
> 
> > Hola a tod@s,
> > 
> > Les cuento… Tengo lo siguiente en aplicaciÃ³n:
> > 
> > Una pÃ¡gina donde esta mi modelo docencia que a su vez le voy agregando  
> > todos los dictados de carreras:
> > 
> > \<% f.fields\_for :dictados do |dictado\_form| %\> \<%= render :partial =\> 'dictado', :locals =\> { :f =\> dictado\_form } %\> \<% end %\> \<%= add\_child\_link "Agregar un dictado de carrera", f, :dictados %\> 
> > 
> > En el partial de dictado carrera tengo lo siguiente:
> > 
> > \<%= render :partial =\> ‘./shared/carreras’ %\>
> > 
> > Y el partial de carrera tiene lo siguiente:
> > 
> > \<%= collection\_select(@mcarrera.to\_s, “codcarrera”, Carrera.find(:all,  
> > :order=\>“nombre”), :codcarrera, :nombre,  
> > {:prompt =\> “”, :selected =\> @codcarrera.to\_i}) %\>
> > 
> > Esto es porque una de las cosas que quiero saber es en que carrera diÃ³  
> > clases el docente. Ahora, me funciona todo bien salvÃ³ que no va  
> > correctamente el dato de codcarrera por POST.
> > 
> > Se preguntarÃ¡n porque ‘@mcarrera’… Porque en otras vistas uso el mismo  
> > partial y ese ‘@mcarrera’ lo seteo con el nombre del modelo para que el  
> > datos de codcarrera vaya por el POST asociado al modelo y se guarde de  
> > una.
> > 
> > En fin, lo que tendrÃ­a que lograr al ver el cÃ³digo html es:  
> > ‘docencia[dictados\_attributes][?][codcarrera]’ pero no se como hacerlo
> > 
> > Otro problema es que al editar como hago para que queden seleccionadas  
> > las carreras en caso de ser mÃ¡s de uno el dictado?
> > 
> > Espero haberme expresado bien y puedan ayudarme. Seguramente a alguiÃ©n  
> > le paso pero no encontrÃ© nada por acÃ¡. Gracias!
> > 
> > # PerdÃ³n por duplicar el post, puse el mismo en el foro en inglÃ©s y
> > 
> > ahora no sÃ© como eliminarlo… algÃºn moderador por ahÃ­?
> 
> Una de las cosas que se me ocurriÃ³ es setear @mcarrera con  
> “nombre\_modelo[nombre\_del\_modelo\_nested\_form]”
> 
> Observando los parÃ¡metros que viajan por post (viendo los logs) llegÃ¡  
> todo bien, pero igual no funciona. Me muestra el siguiente error (el 2  
> corresponde al id de carrera):
> 
> undefined method `with\_indifferent\_access’ for “2”:String
> 
> Gracias!

Finalmente lo solucione. Era mÃ¡s fÃ¡cil de lo que creÃ­a, jeje…

Les comentaba que usaba una variable @mcarrera para setear el modelo en  
el collection\_select. Bueno, no es necesario, se puede usar la tÃ­pica  
variable “f” del formulario, es decir:

\<% form\_for(@modelo) do |f| %\>

Y en el collection\_select quedarÃ­a lo siguiente:

\<%= f.collection\_select(:codcarrera, Carrera.find(:all,  
:order=\>“nombre”), :codcarrera, :nombre, {:prompt =\> “”, :selected =\>  
@codcarrera.to\_i}) %\>

En mi caso tuve que poner el collection\_select en el mismo formulario  
que utilizo con el nested form y no como un partial como lo tenÃ­a ya que  
esa variable “f” de mi modelo (el de nested forms) no me funciona. La  
soluciÃ³n esta por modificar el javascript utilizado para ir agregando  
dinamicamente, en este caso, los dictados.

Si alguiÃ©n le encuentra la vuelta a esto nos cuenta, sÃ­?

Gracias!

Gracias!
