[ANN] model_auto_completer

Solo comentar que hemos (ASPgems) publicado un plugin para
autocompletar modelos:

http://agilewebdevelopment.com/plugins/model_auto_completer

Este plugin provee un campo de texto que autocompleta cadenas como el
estandard de Rails, pero ademas gestiona el ID del modelo asociado a
la seleccion transparentemente en un campo hidden.

Un caso de uso es una asociacion en la que hay demasiadas opciones
como para que un combo sea usable. Imaginaos que estais en una base
de datos de una libreria y quereis asociar un autor a un libro,
teniendo una tabla de autores con centenares de registros. Con el
widget del plugin puedes ofrecer al usuario un textfield en el que
busca por el nombre con autocompletado, y obtener a su vez el ID
correspondiente de vuelta en el controlador.

El uso queda asi:

<%= belongs_to_auto_completer :book, :author, :fullname %>

Hay algunas opciones de configuracion, un helper generico del que ese
es un wrapper de conveniencia, y el tipico metodo de clase para
controladores que genera la accion compinchada con el widget con
algunos defaults. Los detalles estan en la documentacion:

http://model-ac.rubyforge.org/

Es nuestro primer plugin, no dudeis en enviar criticas despiadadas :-).

– fxn

En primer lugar, muchas gracias.

Y en segundo una pregunta, ¿puede haber más de un model_auto_completer
en la
misma vista?.
Pregunto ésto ya que, por lo que he podido leer, en el
autocomplete_text_field hay que hacerle algunas modificaciones para que
pueda haber varios en la misma vista.

Ejemplo: una vista en la que tengas un campo Origen y un campo Destino
que
atacan a la misma base de datos de calles.

De nuevo muchas gracias.
Un saludo.

On 19/01/07, Xavier N. [email protected] wrote:

Un caso de uso es una asociacion en la que hay demasiadas opciones


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


Blog: www.lacoctelera.com/tomaslucas

Los Tres Chiflados (NRT).

Tomás Lucas A. wrote:

En primer lugar, muchas gracias.

Y en segundo una pregunta, ¿puede haber más de un model_auto_completer
en la
misma vista?.
Pregunto ésto ya que, por lo que he podido leer, en el
autocomplete_text_field hay que hacerle algunas modificaciones para que
pueda haber varios en la misma vista.

Ejemplo: una vista en la que tengas un campo Origen y un campo Destino
que
atacan a la misma base de datos de calles.

De nuevo muchas gracias.
Un saludo.

On 19/01/07, Xavier N. [email protected] wrote:

Un caso de uso es una asociacion en la que hay demasiadas opciones


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


Blog: www.lacoctelera.com/tomaslucas

Los Tres Chiflados (NRT).

Buenas.

seria muy rico que los magos en esto nos dieran mas informacion sobre el
uso de este plugins, parece muy interesante pero no facil de implementar
para los nuevones en ruby.

mil gracias.

William

Buenas.

seria muy rico que los magos en esto nos dieran mas informacion sobre el
uso de este plugins, parece muy interesante pero no facil de implementar
para los nuevones en ruby.

mil gracias.

William

Bueno! como veo que nadie maneja el plugins model_auto_completer, creo
que por lo nuevo, de que otra forma puedo hacer una lista desplegable
que obtiene los datos de un modelo, cuyos datos son muchos, pero muchos.
gracias

On Jan 25, 2007, at 8:47 PM, William B. wrote:

seria muy rico que los magos en esto nos dieran mas informacion
sobre el
uso de este plugins, parece muy interesante pero no facil de
implementar
para los nuevones en ruby.

Viste la documentacion en

http://model-ac.rubyforge.org

?

– fxn

Xavier N. wrote:

On Jan 25, 2007, at 8:47 PM, William B. wrote:

seria muy rico que los magos en esto nos dieran mas informacion
sobre el
uso de este plugins, parece muy interesante pero no facil de
implementar
para los nuevones en ruby.

Viste la documentacion en

http://model-ac.rubyforge.org

?

– fxn

Si la vi, pero no me es muy clara, apenas estoy despegando y no
comprendo el instructivo, me parece muy corto. saludos.

On Jan 26, 2007, at 3:00 AM, Guest wrote:

http://model-ac.rubyforge.org

?

– fxn

Si la vi, pero no me es muy clara, apenas estoy despegando y no
comprendo el instructivo, me parece muy corto. saludos.

Si, es que asume que ya se sabe autocompletar con el widget builtin
(en esta primera version del plugin). Por que no me dices los modelos
implicados, sus relaciones, y sobre que atributo quieres
autocompletar? Asi te lo explico directamente con esos nombres.

– fxn

Xavier N. wrote:

On Jan 26, 2007, at 3:00 AM, Guest wrote:

http://model-ac.rubyforge.org

?

– fxn

Si la vi, pero no me es muy clara, apenas estoy despegando y no
comprendo el instructivo, me parece muy corto. saludos.

Si, es que asume que ya se sabe autocompletar con el widget builtin
(en esta primera version del plugin). Por que no me dices los modelos
implicados, sus relaciones, y sobre que atributo quieres
autocompletar? Asi te lo explico directamente con esos nombres.

– fxn

upppppppsssssssss. que bien!

hola Xavier los modelos de datos son estos:
CREATE TABLE parametros (
id INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(50) NULL,
descripcion VARCHAR(100) NULL,
PRIMARY KEY(id)
);

CREATE TABLE miembros (
id INT NOT NULL AUTO_INCREMENT,
nombres VARCHAR(50) NOT NULL,
apellidos VARCHAR(50) NOT NULL,
telefono VARCHAR(20) NULL,
direccion VARCHAR(50) NULL,
parametro_id INT NOT NULL,
PRIMARY KEY(id),
INDEX miembros_FKIndex1(id),
FOREIGN KEY(parametro_id)
REFERENCES parametros(id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);

CREATE TABLE movimientos (
id INT NOT NULL AUTO_INCREMENT,
miembro_id INT NOT NULL,
fecha DATE NOT NULL,
ingreso FLOAT NULL,
salida FLOAT NULL,
PRIMARY KEY(id),
INDEX movimientos_FKIndex1(id),
FOREIGN KEY(miembro_id)
REFERENCES miembros(id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);

la tabla maestra es miembros(de esta tabla sale la lista con los campos
nombres y apellidos, devolviendo el id) y sobre la tabla movimientos es
que vamos a hacer el cargado de datos con un formulario, la lista
alimentaria el campo miembro_id.

no se si lo explique bien.

Eres muy amable Xavier.

gracias.

On Jan 26, 2007, at 2:16 PM, William B. wrote:

apellidos VARCHAR(50) NOT NULL,

  ON DELETE NO ACTION

no se si lo explique bien.
Muchas gracias.

Para hacerlo sencillo tiraremos de defaults, y supondremos que
tenemos un metodo fullname asi:

class Miembro < AR::Base
def fullname
“#{apellidos}, #{nombres}”
end
end

En el formulario de movimientos pondrias (asumimos que Movimiento
belongs_to :miembro):

<%= belongs_to_auto_completer :movimiento, :miembro, :fullname %>

En el controlador de movimientos escribirias esta accion:

def auto_complete_belongs_to_for_movimiento_miembro_fullname
query = params[:miembro][:fullname].downcase
query = “%#{query}%”
@miembros = Miembro.find(
:all,
:conditions => [‘LOWER(nombres) LIKE ? OR LOWER(apellidos)
LIKE ?’, query, query],
:limit => 10
)
render :partial => ‘movimiento_miembro_completions’
end

y una vista parcial de ese mismo controlador
“_movimiento_miembro_completions.rhtml” con esta pinta:

    <% for miembro in @miembros %>
  • <%=h miembro.fullname %>
  • <% end %>

No olvides

<%= javascript_include_tag :defaults %>

en el layout para que Ajax funcione. Que tal asi?

– fxn

P.D.: Espero que no haya erratas, lo he escrito sobre la marcha en el
email mismo

P.D.: Espero que no haya erratas, lo he escrito sobre la marcha en el
email mismo

mil gracias Xavier, estoy haciendo los ajustes.

al instalar el plugin no se genera ningun mensaje, sera que se hizo
bien?

como se si se instalo?

al correr la aplicacion con los ajustes que me hicistes me genera el
siguiente error:

NoMethodError in Movimientos#new
Showing app/views/movimientos/_form.rhtml where line #5 raised:

undefined method `belongs_to_auto_completer’ for
#<#Class:0x68e4134:0x68e410c>

Extracted source (around line #5):

2:
3:
4:

miembro

5: <%= belongs_to_auto_completer :movimiento, :miembro, :fullname %>
6:
7:

Fecha

8: <%= date_select ‘movimiento’, ‘fecha’ %>

Trace of template inclusion: /app/views/movimientos/new.rhtml

RAILS_ROOT: ./script/…/config/…

Application Trace | Framework Trace | Full Trace
#{RAILS_ROOT}/app/views/movimientos/_form.rhtml:5:in
_run_rhtml_movimientos__form' #{RAILS_ROOT}/app/views/movimientos/new.rhtml:4:in_run_rhtml_movimientos_new’

puede ser que nos falto algo.

que pena molestarte.

Gracias.
William

On Jan 26, 2007, at 7:31 PM, William B. wrote:

al instalar el plugin no se genera ningun mensaje, sera que se hizo
bien?

como se si se instalo?

Mira si lo ves en vendor/plugins.

Extracted source (around line #5):

2:
3:
4:

miembro

5: <%= belongs_to_auto_completer :movimiento, :miembro, :fullname %>

Rebotaste el servidor? Los plugins no tienen autoload.

– fxn

Xavier N. wrote:

On Jan 26, 2007, at 7:31 PM, William B. wrote:

al instalar el plugin no se genera ningun mensaje, sera que se hizo
bien?

como se si se instalo?

Mira si lo ves en vendor/plugins.

Extracted source (around line #5):

2:
3:
4:

miembro

5: <%= belongs_to_auto_completer :movimiento, :miembro, :fullname %>

Rebotaste el servidor? Los plugins no tienen autoload.

– fxn

probe reiniciando el servidor y no aparece nada en vendor/plugins.

mil gracias Xavier.

On Jan 26, 2007, at 8:29 PM, William B. wrote:

Extracted source (around line #5):
probe reiniciando el servidor y no aparece nada en vendor/plugins.
Si no esta en vendor/plugins no esta instalado siquiera. Como hiciste
para instalarlo?

– fxn

Xavier N. wrote:

On Jan 26, 2007, at 8:29 PM, William B. wrote:

Extracted source (around line #5):
probe reiniciando el servidor y no aparece nada en vendor/plugins.
Si no esta en vendor/plugins no esta instalado siquiera. Como hiciste
para instalarlo?

– fxn

c:\rails\ruby script/plugin install
svn://rubyforge.org/var/svn/model-ac/trunk/vendor/plugins/model_auto_comple

Xavier N. wrote:

On Jan 26, 2007, at 10:15 PM, William B. wrote:

c:\rails\ruby script/plugin install
svn://rubyforge.org/var/svn/model-ac/trunk/vendor/plugins/
model_auto_comple

Nunca he usado script/plugin en Windows, tienes un cliente de
Subversion de linea de comandos instalado?

http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91

– fxn

Xavier, mil gracias por tu ayuda, pero desisto de usar este plugins por
ahora, ya que no se manejar subversion y estoy perdiendo tiempo en la
instalada de este plugin, voy a cambiar la implementacion y a esperar
que otros se encuentren con este mismo caso y estare pendiente de como
lo solucionan.

saludos y mil gracias.

william

On Jan 26, 2007, at 10:45 PM, William B. wrote:

http://subversion.tigris.org/servlets/ProjectDocumentList?
folderID=91

– fxn

Xavier, mil gracias por tu ayuda, pero desisto de usar este plugins
por
ahora, ya que no se manejar subversion y estoy perdiendo tiempo en la
instalada de este plugin, voy a cambiar la implementacion y a esperar
que otros se encuentren con este mismo caso y estare pendiente de como
lo solucionan.

Como veas, pero se trata solo de instalar los programas. No has de
usarlos tu, script/plugin necesita tener el programa “svn” en el PATH
del sistema, lo usa el.

– fxn

William,

para ejecutar el

ruby script/plugin install
svn://rubyforge.org/var/svn/model-ac/trunk/vendor/plugins/

debes estar en el directorio de tu aplicacion, ejemplo: c:\miapp, luego
ahí si ejecutas el comando como está arriba

Adjunto te envío como quedarían los modelos, los controladores y las
vistas, a partir de ahí solicitaría a los colisteros que echen una
manito.

No se te olvide que en evironment.rb las opciones para manejar el plural
en español:

Inflector.inflections do |inflect|
inflect.plural /^(.)([lrnds])$/i, ‘\1\2es’
inflect.singular /^(.
)([lrnds])es$/i, ‘\1\2’
inflect.plural /^(ox)$/i, ‘\1en’
inflect.singular /^(ox)en/i, ‘\1’
inflect.plural /([^aeiou])$/i, ‘\1es’
inflect.singular /(.)es$/i, ‘\1’
inflect.plural /(.
)z$/i, ‘\1ces’
inflect.singular /(.*)ces$/i, ‘\1z’
inflect.irregular ‘person’, ‘people’
inflect.uncountable %w( fish sheep )
end

Tambien adjunto envío el plugin, por fa descomprimelo en vendor\plugins
de tu aplicacion

Espero me excusen de enviar tanto adjunto,

Benjamin

On Jan 26, 2007, at 10:15 PM, William B. wrote:

c:\rails\ruby script/plugin install
svn://rubyforge.org/var/svn/model-ac/trunk/vendor/plugins/
model_auto_comple

Nunca he usado script/plugin en Windows, tienes un cliente de
Subversion de linea de comandos instalado?

http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91

– fxn

Benjamín Cárdenas Salamandra wrote:

ah, se me olvidaba, yo uso en windows tortoiseSVN,
http://tortoisesvn.tigris.org/, es muy facil de usar:

  1. creas una carpeta (yo tengo una llamada plugins en la que coloco mi
    coleccion y mantengo actualizando las fuentes)
  2. das click derecho sobre la carpeta y seleccionas del men?rgente:
    SVN Checkout
  3. Sale una ventana en la se escribe el URL. Que para el caso anterior
    es: svn://rubyforge.org/var/svn/model-ac/trunk/vendor/plugins/
  4. Cuando se quiera verificar si hay actualizaciones, se da click
    derecho sobre la carpeta y SVN Update

Listo,

Benjamin

gracias Benjamin, probare y te contare.

mil gracias.

Benjamín Cárdenas Salamandra wrote:

Adjunto te envío como quedarían los modelos, los controladores y las
vistas, a partir de ahí solicitaría a los colisteros que echen una
manito.

Buenos dias Benjamin, que pena no encuentro los archivos anexados. saludos y bue dia.