viernes, 14 de diciembre de 2007

IE no cachea los background-image's

He desarrollado dos widgets a partir de datepicker: un menu contextual y un tooltip. No han costado demasiado pero, como siempre, ejecutando las aplicaciones contra localhost todo es simple y bonito y al llevarlo a un servidor de verdad te das cuenta de cosillas.

En este caso, volviendo a caer de mi propio guindo, las imágenes declaradas como background-image en una CSS no son cacheadas por IE. Y también en este caso, como en la mayoría de casos, preguntando a Google se llega a Roma.

Teniendo cargado prototype.js

if(Prototype.Browser.IE) document.execCommand("BackgroundImageCache", false, true);

Lo puede hacer, pero no lo hace. A veces me cuesta defender mi principio de no primacía de nungún navegador.

jueves, 13 de diciembre de 2007

Tuneando acts_as_list

Tengo un modelo de datos con dos tablas as y bs. Por tanto, tengo los modelos a.rb y b.rb donde

class A < ActiveRecord::Base
 has_many :bs, :dependent => :destroy
end

class B < ActiveRecord::Base
 belongs_to :a
 acts_as_tree :order => 'position'
 acts_as_list :scope => a
end


Es decir, la tabla bs contiene los campos a_id, position y parent_id de forma que los registros de bs relacionados con un mismo registro de as se comporten como una lista.

Ahora bien, he de cambiar esto. Necesito que los registros de bs relacionados con un mismo registro de as y con parent_id = null se comporten como una lista independiente.

 acts_as_list :scope => 'a_id = #{a_id} and parent_id is null'

Finalmente, necesito que los registros de bs con un mismo parent_id y relacionados a un mismo registro de as también se comporten como una lista independiente.

 acts_as_list :scope => 'a_id = #{a_id} and parent_id #{parent.nil? ? \'is null\' : \'= \' + parent_id.to_s }'

Como se dice en la documentación, acerca de :scope
It‘s also possible to give it an entire string that is interpolated if you need a tighter scope than just a foreign key.
...y eso hemos hecho.