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: 

 

aplication.rb

En el pasado he podido reutilizar codigo en un archivo que tiene la siguiente estructura:


module Nombremodulo 
.
.
.
end

class Nombrecontroller <>

  inlcude Nombremodulo

  def uno

Nombremodulo

  end
  .
  .
  .

end


De esa manera e podido reutilizar codigo en varios metodos de un controlador.

Ahora bien, ¿existe una manera sencilla de llamar a un modulo que se encuentre
 en otro lugar del andamiaje de rails (bien sea definido por rails o por el programador)
 para ser usado en otros controladores que
 puedan estar ubicados en otros archivos?

Es decir, algo como:

comandollamada(direccion_del_modulo, nombre_del_modulo)

Sustituyendo: include Nombremodulo

Seria estupendo contar con una herramienta como esa