Pasar Hash entre Metodos

20 views
Skip to first unread message

gramirez

unread,
Sep 2, 2015, 11:27:47 AM9/2/15
to rubysur
Hola,

Soy nuevo en Rails!! y ademas soy desarrollador nuevo en ambiente web!!

Para mi trabajo estoy desarrollando una aplicación que debe realizar lo siguiente:
   
   1. Cuando el usuario ingresa debe presentar una tabla con registros de negocios.(ok)
   2. Debe permitir realizar filtros de los negocios por fechas (ok)
   3. Con la selección de registros presentados debe generar gráficas por la columna ramo

Para lo anterior he venido trabajando con las siguientes gemas: 

   1. Para filtrar con Ransack, esta funcionando bien, me ha permitido filtrar lo que el usuario quiere generar
   2. Para la generación de gráficas he implementado Flot js, me ha funcionado bien.

El problema que tengo es que no se como pasar el conjunto de registros que genera el filtro (@negocios) de un método a otro, es decir, se realiza el filtro, se presenta en la tabla, pero cuando se desea generar la gráfica esta solo funciona cuando ha ingresado por primera vez, es decir, tiene todos los registros.

He utilizado el Puts @negocios.inspect para ver los registros pero antes de ejecutar el método de la gráfica va en nil.

El siguiente es el código del controlador:

class NergociosController < AplicationController

respond_to :json, :html

...

def index
   @negocios = Negocios.order('actividad DESC', fecha_solicitud DESC').page(params[:page])
   @search=Negocios.search(params[:q])
   @negocios=@search.result.page(params[:page])
end


def gramos
puts @negocios.inspect     (=> nil)
puts @search                    (=> "")
@data_negocios = Negocios.all.group_by(&:ramo).map {|k,v| {label: k.nombre, data: v.count}}  (así funciona las gráfica cuando el usuario inicia)

@data_negocios = @negocios.all.group_by(&:ramo).map {|k,v| {label: k.nombre, data: v.count}}  (esto es lo que quiere)


No se si la solución planteada es la correcta o con que sugerencias me pueden orientar.

Gracias,

Gerardo Ramírez



Nicolás Oga

unread,
Sep 3, 2015, 11:46:50 AM9/3/15
to rubysur
Hola Gerardo,

no se entiende bien desde donde queres llamar el metodo gramos.
Pero si no seteas de alguna forma las variables antes, nunca van a tener un valor.

Si van a tener un valor siempre y cuando ya las allas seteado dentro de la misma instancia de controlador, y se instancia un nuevo controlador para cada repuesta a un request.
Si vos queres persistir datos entre requests, ahi esta el problema. Para eso podes usar la sesion.

Consejo: hay mejores maneras de debuguear codigo que usando un "puts". Podes usar un debugger, o simplemente testear el codigo en la consola de Rails:
  • si usas ruby menor a la version 2.0: mete un
    require 'debugger'
    debugger
  • si usas ruby mayor o igual  a la version 2.0
    require 'byebug'
    byebug
  • Sin importar la version, podes usar pry, un debugger con funcionalidades avanzadas:
    require 'pry'
    binding
    .pry

Gerardo Ramirez Quino

unread,
Sep 3, 2015, 12:33:02 PM9/3/15
to rubysur

Hola Nicolás, gracias por su respuesta y consejos, voy a implementarlo.

Respecto al problema ya lo solucione, como estoy aprendiendo no tenía claro el tema pero leyendo y google ya pude aclarar y solucione el tema

Gerardo


--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages