Problema con parámetros en collection_select (No novato)

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:

  <fieldset>
   <% 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 %>
  </fieldset>

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í?

Evaldo Kalbermatter 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:

  <fieldset>
   <% 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 %>
  </fieldset>

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!

Evaldo Kalbermatter wrote:

Evaldo Kalbermatter 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:

  <fieldset>
   <% 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 %>
  </fieldset>

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!