Forum: Rails-ES Problemas con el plugin autocomplete

Posted by Jose vicente Ribera pellicer (joripel)
on 2009-06-29 11:07
Muy buenas, hoy al llegar al trabajo me he puesto a instalar este
fantastico plugin. Supongo que muchos ya lo connocereis y para lo que no
lo conozcan el nombre es bastante descriptivo. Se encarga de
autocompletar los campos de texto con las palabras que se han ido
introduciendo consiguiendo de esta forma agilizar los formularios. Un
plugin que se debe de situar ente lso imprescindibles en rails bajo mi
punto de vista.

Comento el problema que ha aparecido tras haberlo instalado de forma
satisfactoria en otras 2 aplicaciones. Bueno antes comento un poco el
procedimiento seguido por si alguien no lo conoce, así le sirve de
introducción:

Instalamos el plugin:
script/plugin install auto_complete

Tras la instalacion es momento de preocuparnos por la vista y el
controlador:
En la vista debemos incorporar:
<%= text_field_with_auto_complete :producto, :entidad %> para aquellos
campos de texto donde se quiera hacer uso del autocompletado. Producto
es el nombre del modelo  y entidad es el campo del modelo.

Para finalizar en el controlador debemos agregar esta linea:
auto_complete_for :producto, :entidad.


PD.
No debemos olvidar incluir las respectivas rutas en routes.rb

map.auto_complete ':controller/:action',
                  :requirements => { :action => /auto_complete_for_\S+/
},
                  :conditions => { :method => :get }



Pues bien una vez finalizado todo este proceso cuando me dispongo a
probar el plugin sucede que al insertar una  palabra el texto de la
vista pasa de Arial a Verdana, aunque ambas tipografias mantienen el
mismo tamaño la verdana al ser ams ancha por defecto me destroza la
maquetación. He estado mirando por los distintos css y por la
documentación del pluggin pero no he encontrado nada parecido. Alguien
se le ocrre porqué puede estar pasando algo tan raro??

Un saludo y gracias por las respuestas
Posted by Jose vicente Ribera pellicer (joripel)
on 2009-06-29 11:52
Parece que le erro puede venir por aqui...

ActionController::UnknownAction (No action responded to 
auto_complete_for_producto_entidad):
Posted by Jose vicente Ribera pellicer (joripel)
on 2009-06-29 13:38
Bueno, hemos estado intentando varias cosas y no hemos conseguido dar 
con la solucion. Supongo qe el plugin no tendra problemas cuando 
incluimos la herencia en los modelos. Es decir, no creo que me deestos 
problemas al tener una heréncia del tipo:

class Hipoteca < Producto
El form_for lo realizamos dentro de la vista del producto (el modelo del 
que heredarán los demas). Y la linea <%= text_field_with_auto_complete 
:producto, :entidad %> esta incluida dentro del partial 
productos/campos_nuevo_editar.

<% form_for(:producto, :url => ruta_producto(productos_path, @producto), 
:html => { :multipart => true }) do |f| %>

    <%= render :partial => 'productos/campos_nuevo_editar', :locals => { 
:f => f } %>

    <%- fields_for :opinion, @contenido do |form| -%>
      <%= render :partial => 'opiniones/campos_nuevo_editar', :locals => 
{ :f => form, :i => 2 } %>
    <%- end -%>

    <%= submit_tag "Enviar comentario", {:class => "form_button"} %>
  <% end %>

El error lo da por no encontrar el método, pero yo creo que esta puesto 
en el sitio correcto (en el controlador mas generico el Productos 
Controller). En los otros sitios que lo implemente no recuerdo si habia 
este tipo de herencia, pero no creo que debiera ser un problema...aunque 
visto lo visto. ya no se que decir.
Posted by Guillermo (Guest)
on 2009-06-29 13:47
(Received via mailing list)
Puedes pasarnos el archivo routes.rb

tienes mapeado controller/action/id o usas resources ?

En caso de usar resources... ¿Has añadido manualmente las nuevas 
acciones?

Un Saludo.
Posted by Jose vicente Ribera pellicer (joripel)
on 2009-06-29 14:01
> Puedes pasarnos el archivo routes.rb
> 
> tienes mapeado controller/action/id o usas resources ?
> 
> En caso de usar resources... ¿Has añadido manualmente las nuevas 
> acciones?
> 
> Un Saludo.

Hola Guillermo, en el archivo de rutas tengo puesto esto para los 
auto_complete:

map.auto_complete ':controller/:action',
                  :requirements => { :action => /auto_complete_for_\S+/
},
                  :conditions => { :method => :get }

Lo saque de un artículo muy interesante:
http://codeintensity.blogspot.com/2008/02/auto-complete-text-fields-in-rails-2.html
Posted by Jose vicente Ribera pellicer (joripel)
on 2009-06-29 14:06
Quizás el error pueda venir por ponerlo así ya que

map.auto_complete ':controller/:action',
                  :requirements => { :action => /auto_complete_for_\S+/
},
                  :conditions => { :method => :get }

enrutalos metodos que empiezan por auto_complete y yo en el controlador 
no tengo definidos lso métodos como:
def auto_complete_...
end

Es decir que lo tengo puesto en forma:
auto_complete_for :producto, :entidad

Voy a intentarlo como bien dices tu mediante map.resources a ver que 
tal.

Saludos y gracias por el empujoncito!!
Posted by Jose vicente Ribera pellicer (joripel)
on 2009-06-29 14:27
Efectivamente el problema estaba en el fichero de rutas ;).

Ahora me enfrento a otro problema, quieren que el autocomplete se 
alimente de una columna de una tabla especifica. Basicamente queremos 
autocompletar con nombres de entidades bancarias y lo que buscan es que 
el plugin lea unicamente de la columna entidades que tiene esta la tabla 
porducots (la tabla maestra de la que heredan las demas).

Por lo que he visto el plugin replica los valores que se han ido 
introduciendo anteriormente asi que supongo que alguna modificación se 
deberá hacer. Si alguien ya ha taratado con esta problemática cualquier 
referencia será de ayuda.


Un saludo y gracias!!
Posted by Jose vicente Ribera pellicer (joripel)
on 2009-06-29 17:11
Por si alguien esta interesado en wl tema el capitulo 102 de railscasts 
parece muy muy interesante:

http://railscasts.com/episodes/102-auto-complete-association
Posted by David J,nas (acidburg)
on 2009-06-30 13:05
yo lo instalo agrego eso en el router i me dice que no esta definido el 
metodo Acidburg@hotmail.com agreguenme
Posted by Manuel González Noriega (Guest)
on 2009-06-30 13:22
(Received via mailing list)
2009/6/30 David J,nas <ruby-forum-incoming@andreas-s.net>

> yo lo instalo agrego eso en el router i me dice que no esta definido el
> metodo Acidburg@hotmail.com agreguenme
>


(esperado ansiosamente la respuesta de Textdrive a mi ticket)
Posted by David J,nas (acidburg)
on 2009-07-01 10:09
ya he conseguido que me valla al javascript pero no consigo que me lo 
aplique a
<%= text_field_with_auto_complete :cita, :pacientebusca_nombre, { :size 
=> 15 }, { :url => formatted_pacientes_path(:js), :method => :get } %>
Posted by Manuel González Noriega (Guest)
on 2009-07-01 10:32
(Received via mailing list)
2009/7/1 David J,nas <ruby-forum-incoming@andreas-s.net>

> ya he conseguido que me valla al javascript pero no consigo que me lo
> aplique a
> <%= text_field_with_auto_complete :cita, :pacientebusca_nombre, { :size
> => 15 }, { :url => formatted_pacientes_path(:js), :method => :get } %>
> --
>


David, por favor, deja de escribir esta clase de mensajes, confusos, con
mala ortografía y peor redacción. Si quieres que alguien te preste 
atención
escribe un nuevo mensaje con un título adecuado, una explicación concisa 
y
comprensible de tu problema y un par de pases por el corrector 
ortográfico
más cercano a tu domicilio.

Muchas gracias
Posted by David J,nas (acidburg)
on 2009-07-01 10:40
La ortografía es cada uno la que tiene el lenguaje está para comunicarse 
no para criticarnos, escribo como se y o puedo el problema esta en que 
no llamo bien al javascript por que por separado me funciona, pero al 
applicarlo en el textfield no realiza nada y el firebug parece que no 
detecta qeu hay un javascript.
Posted by Manuel González Noriega (Guest)
on 2009-07-01 10:48
(Received via mailing list)
2009/7/1 David J,nas <ruby-forum-incoming@andreas-s.net>

> La ortografía es cada uno la que tiene el lenguaje está para comunicarse
> no para criticarnos, escribo como se y o puedo el problema esta en que
> no llamo bien al javascript por que por separado me funciona, pero al
> applicarlo en el textfield no realiza nada y el firebug parece que no
> detecta qeu hay un javascript.
> --
>

Es muy probable que el problema sea que el motor de parseado del 
navegador
no comparte tu laxo concepto de la ortografía, en este caso de la del
javascript.

En cualquier caso, te repito: abre un nuevo mensaje, ponle un título
descriptivo, redacta tu mensaje cuidadosamente, utiliza un corrector
ortográfico si lo necesitas, detalla tu problema e incluye los 
fragmentos de
código relevantes. De lo contrario es dificil que nadie tenga el 
suficiente
tiempo libre para dedicarse a entenderte primero y ayudarte después.
Posted by David J,nas (acidburg)
on 2009-07-01 10:56
A ver este foro es del autocomplete .. Asi que considero que estoy 
escribiendo en el lugar adecuado.
http://127.0.0.1:3000/pacientes.js el codigo que hay alli es <%= 
auto_complete_result @pacientes, :nombre %>  ese fichero se llama 
index.js.erb i esta dentro de la carpeta pacientes.

En citas new tengo <%= text_field_with_auto_complete :cita, 
:pacientebusca_nombre, { :size => 15 }, { :url => 
formatted_pacientes_path(:js), :method => :get } %>.
En citas.rb tengo

def pacientebusca_nombre
  paciente.nombre if paciente
end

def pacientebusca_nombre=(nombre)
  self.paciente = Paciente.find_or_create_by_nombre(nombre) unless 
nombre.blank?
end
en el aplication.html.erb

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <title>Centro Médico: <%= controller.action_name %></title>
  <%= stylesheet_link_tag 'scaffold' %>
  <%= javascript_include_tag :defaults %>
</head>
<body>

<p style="color: green"><%= flash[:notice] %></p>

<%= yield  %>
<%= link_to 'Logout', :controller => 'admin', :action => 'logout' %>
</body>
</html>

Lo que quiero es que desde new cita pueda buscar los pacientes que tengo
Posted by Juanjo Bazán (Guest)
on 2009-07-01 12:16
(Received via mailing list)
Textdrive, apiádate de nosotros.

2009/7/1 David J,nas <ruby-forum-incoming@andreas-s.net>
Posted by Manuel González Noriega (Guest)
on 2009-07-01 12:28
(Received via mailing list)
2009/7/1 Juanjo Bazán <jjbazan@gmail.com>

> Textdrive, apiádate de nosotros.
>

Raul Murciano ha tenido el encantador gesto de pedirme el número de
incidencia e intentar acelerar el proceso. Estamos en ello.

Mientras tanto sed fuertes, niños, cogeos las manos y confiad en el 
Monstruo
de Spaguetti volador, que nos salvará a todos. No lloréis.

Hacedlo por Michael, así como Él murió por vosotros.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.