miércoles, 14 de enero de 2009

Como explorar un arreglo donde se han almacenado varios params de formulario

Esto puede ser util cuando se quiere almacenar en una session un arreglo con los datos de un formulario ejecutado varias veces. Posteriormente cuando ya no se van a llenar mas formularios, entonces se ejecutaria un metodo que explore el arreglo y grabe cada fila del arreglo cono un registro nuevo en una tabla


# Previamente hemos incialicado el arreglo session[:reg_add]=[] en otro metodo

# Cada vez que se ejecuta el formulario se ejecuta el metodo registros_a_anadir
# donde se almacenan todos los registros a añadir

def registros_a_anadir

session[:reg_add] <<  params[:cliente]

# Obtener un campo de la última fila del arreglo
ultimo=session[:reg_add].size-1
 puts ">>>>>>>>>>>>>>>>>>>>>> variable reg: #{session[:reg_add][ultimo]['clie_descri']} "

# Para explorar el arreglo (solamennte imprime un campo del formulario)
# Como puede observarse r es un hash
session[:reg_add].each { |r|
        puts ">>>>>>>>>>>>>>>>>> Descri: #{r['clie_descri']} "
      }

end


De esta manera se ahora tiempo al ejecutar el insert en la tabla

domingo, 23 de noviembre de 2008

Error 500: internal server error

Razones por la que puede dar este error:

-Cuandohay problamas con las sesiones:
Asu vez estos errores pueden deberse a:
- Que se esta trabajando con una version de rails reciente que guarda las sesiones en cookies en lugar de un achivo en el servidor. El problema empieza a aparecer cuando se guardan sesiones con muchos datos, muy pesadas, ya que las cookies tienen un límite en cuanto a la cantidad de información  que pueden guardar.
- Que se ha configurado Rails para que trabaje guardando las sesiones en una base de datos y no se ha creado dicha base de datos usando:
rake db:sessions:create      y luego  
rake db: migrate 

martes, 11 de noviembre de 2008

A la hora de presentar paginas hechas en RoR en un PDA, no hay ningún problema. Simplemente hay que tener en cuenta que dichas páginas no deben tener mucho javascript.
Por que no todos los navegadores de las pda reconocen todo el javascript.

De manera que si un cliente no está dispuesto a utilizar un navegador más potente en su dispositvo portatil (PDA) tendré que limitarme a la hora de utilizar javascript en la web para el pda. Podría detectar que cliente está accediendo a la web y si es un pda le muestro la versión de pda, con html de toda la vida y con pocas cosas en javascript. El IE de WinCE está muy limitado...

Lo que propongo en el caso que me intereza es: crear un link que dirija directamente a una version del programa sencilla de ver en una pda.

jueves, 23 de octubre de 2008

Error haciendo page.replace_html

try { Element.update("renderSpace2", null); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.update(\"renderSpace2\", null);'); throw e }


Un error tan extraño como el de arriba en Rails, es dificil de descifrar. Pero googleando pude ver que el error suele casi siempre se presenta en el mismo caso que en el uso que yo le daba:

Es decir cuando trato de hacer esto:

metodo listar
  if request.xhr?
  # código y más código . . .
 render :update do |page|
          page.replace_html 'nombredeldiv' , :partial => 'listado'
     end  
  end
end

El problema Se presenta cuando trato de hacer una llamada a un metodo como  el de arriba, haciendo un update. ejemplo:

Código erroneo:


Código corregido:

Nótese que he quitado el update

NO debemos repetir el update, Es decir: O lo hacemos en la vista o en lo hacemos en el metodo.


Tambien esto puede deberse a que en el layout o en el head de la vista(En caso de que no se use un layout),  no se este usando la instrucción: 

Layout  ...   <%= javascript_include_tag :defaults %> ...

viernes, 17 de octubre de 2008

Estoy escribiendo una aplicación en Rails, cuando habilité db based session store, descomentando:

config.action_controller.session_store = :active_record_store

en environment.rb, me marcó el siguiente error:

No :secret given to the #protect_from_forgery call.  Set that or use a session store capable of generating its own keys (Cookie Session Store)

Sí te pasa el mismo error, solo ve a aplication.rb y verifica que tengas comentadas las siguientes lineas:

#protect_from_forgery

#secret=>’algo’

Reinicia el server y listo, todo volvió a la normalidad.

Este post es por sí me vuelve a pasar :)

viernes, 3 de octubre de 2008

Foro básico-medio de ruby on rails

La pregunta de abajo la publique en ruby-forum.com hace unos dias.

Sin embargo, no recibí respuesta. En otras ocasiones recibi malas respuestas a preguntas que consideraron tontas. Evidentemente se consideran un foro de élite. De hecho no soy el único que a recibido este tipo de rspuestas.

En forosdelweb.com son mas cordiales, pero al parecer no tienen suficiente gente trabajando en la lista de ruby.

Creo que es necesario la creación de un foro en español que ayude a los principiantes y a los que sin ser expertos ya tienen medio de camino recorrido en ruby y quieren (queremos) seguir aprendiendo.

Me parece fundamental que los elitistas de ruby reconozcan que este lenguaje tiene la peculiaridad de que los programadores pueden hacer muchas cosas con un escaso conocimiento del mismo, de manera que pronto nos topamos con una barrera de desconocimiento, que te dice que debes aprender  el porque de las cosas antes de continuar. 

Ese espacio es necesario llenarlo, mediante un foro de nivel básico-medio, hasta ahora inexistente (en español), que conteste las preguntas simples, cortezmente. 

Esto sin duda, le daria mayor publicidad a ruby entre los hispanohablantes. Cosa que les conviene a todos en el mundo Ruby, incluyendo a la élite.

Por ahora, me propongo publicar en este blog mis preguntas y mis soluciones que considero de nivel básico medio.

ufff .... Bueno, ya me desahogue , ahora en la siguiente entrada la solucion a la pregunta planteada en la entrada anterior: