Forum: Rails-ES options_from_collection_for_select

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.
Miguel M. (Guest)
on 2007-06-29 06:44
(Received via mailing list)
Hola , es mi primer mensaje aqui en la lista, y es mi primera semana de
meterme en el tema de rails que por cierto me alucina cada dia mas.
Les cuento, estoy tratando de hacer un menu options en un _form.rhtml
que
muestra el listado de unos registros de una tabla (series_obras), pero
no me
resulta bien

ese es un estracto de mi codigo en la vista del parcial _form de mi
tabla
obras :
<select id="obra_id" name="obra[que_serie]">
<%= options_from_collection_for_select @series_filtradas, "id_serie",
"nombre_serie",
@obra.que_serie %>
</select>

ahi trato de mostrar los registros de las series_obras, pero no me
funciiona
me arroja el siguente error

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.inject

creo que se puede deber a que la clave foranera no termina en _id, me
gustaria saber si la funcion de rails options_from_collection_for_select
necesita "leer" por convencion un el campo relacionador que termine en
"_id", porque en otro ejemplo de un tutorial lo hice asi y funcionó
bien.

agradeceria sus respuestas

saludos la lista ror
Moises D. (Guest)
on 2007-06-29 11:17
> ese es un estracto de mi codigo en la vista del parcial _form de mi
> tabla obras :
> <select id="obra_id" name="obra[que_serie]">
> <%= options_from_collection_for_select @series_filtradas, "id_serie",
> "nombre_serie",
> @obra.que_serie %>
> </select>
>
> ahi trato de mostrar los registros de las series_obras, pero no me
> funciiona me arroja el siguente error
>
> You have a nil object when you didn't expect it!
> You might have expected an instance of Array.
> The error occurred while evaluating nil.inject
>
> creo que se puede deber a que la clave foranera no termina en _id, me
> gustaria saber si la funcion de rails options_from_collection_for_select
> necesita "leer" por convencion un el campo relacionador que termine en
> "_id", porque en otro ejemplo de un tutorial lo hice asi y funcionó
> bien.

Aunque para tener una visión más global deberíamos tener el código del
controlador y del modelo en cuestión..., tiene pinta que
@series_filtradas es nulo cuando llega a la vista parcial y por eso te
da una excepción nil.inject
Miguel M. (Guest)
on 2007-06-29 19:48
(Received via mailing list)
hola Moises gracias por la respuesta, en efecto @series_filtradas es
nulo
cuando llega al parcial.
revise el controller de obra y me di cuenta que no habia establecido una
relacion a series_obras en del def new.

entonces hice lo siguente

class ObrasController < ApplicationController
 def new
    @obra = Obra.new
     @series_obra_pages,@series_filtradas = paginate (:series_obras,
                                   :conditions => ['quien_usr =?',
session[:auth]],
                                   :order => 'nombre_serie',
                                   :per_page => 3)
  end
end

y funciona, es que pensé que como series_filtradas estaba en otro
controlador, especificamente en el de SeriesobrasController, podia
acceder
desde cualquier otra vista de mi aplicacion. ¿hay alguna manera de hacer
eso,? como para no repetir el  mismo codigo digo

gracias por la respuesta Moises, esta lista esta muy bien

saludos
Moises D. (Guest)
on 2007-07-02 11:49
Acceder a las variables de otro controlador (y que además no está
ejecutando la acción actual) no creo que se pueda..., de todos modos
tampoco hay una gran duplicación en hacer 2 finds que se parezcan en dos
controladores diferentes...

> class ObrasController < ApplicationController
>  def new
>     @obra = Obra.new
>      @series_obra_pages,@series_filtradas = paginate (:series_obras,
>                                    :conditions => ['quien_usr =?',
> session[:auth]],
>                                    :order => 'nombre_serie',
>                                    :per_page => 3)
>   end
> end
>
> y funciona, es que pensé que como series_filtradas estaba en otro
> controlador, especificamente en el de SeriesobrasController, podia
> acceder
> desde cualquier otra vista de mi aplicacion. ¿hay alguna manera de hacer
> eso,? como para no repetir el  mismo codigo digo
Miguel M. (Guest)
on 2007-07-02 18:57
(Received via mailing list)
ok, me queda mucho mas claro aun

saludos cordiales
This topic is locked and can not be replied to.