jueves, 22 de marzo de 2007

PDA y rails

He estado recientemente adaptando una aplicación hecha con ajaxscaffold para que pueda ser utilizada a través de una PDA con Intenet Explorer Mobile 5. Me he encontrado algunos inconvenientes lógicos y predecibles y otros no tanto.

En resumen:

- por alguna razón, los métodos de prototype.js sólo funcionan 'a veces'.
- lo mismo ocurre con las peticiones AJAX.
- el código generado con script/gnerate ajaxscaffold por sí mismo no funciona en PDA.
- en general, en una PDA no caben tantos datos como en una pantalla de portátil o sobremesa.
- el coste en tiempo de hacer que cierto código que funciona en portátil o sobremesa funcione también en PDA es, en general, mayor que el duplicar código.
- la conexión a través de PDA falla bastante y, en ocasiones, exige recargar páginas.

Por tanto, me he visto obligado a tomar las siguientes decisiones

- controlar en todos los controladores implicados si el dispositivo conectado es PDA.
- duplicar vistas en lugar de 'enmarañar' el código.
- eliminar AJAX de las vistas para PDA.
- reducir los formularios y los datos mostrados en las vistas para PDA.
- utilizar un layout propio para PDA que incluye hojas de estilo y ficheros de javascript reducidos.

Finalmente, para controlar el dispositivo he utilizado el siguiente método al que invoco before_filter.

def check_device
  @mobile_device = !request.env['HTTP_X_WAP_PROFILE'].blank?
  return true
end


Es muy posible que haya alguna manera mejor de controlarlo, pero revisando las cabeceras HTTP del request me pareció el parámetro más fiable de comprobar.

No hay comentarios: