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
Parece que le erro puede venir por aqui…
ActionController::UnknownAction (No action responded to
auto_complete_for_producto_entidad):
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.
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:
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!!
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!!
Por si alguien esta interesado en wl tema el capitulo 102 de railscasts
parece muy muy interesante:
yo lo instalo agrego eso en el router i me dice que no esta definido el
metodo [email protected] agreguenme
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.
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 } %>
2009/7/1 David J,nas [email protected]
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
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.
2009/6/30 David J,nas [email protected]
yo lo instalo agrego eso en el router i me dice que no esta definido el
metodo [email protected] agreguenme
(esperado ansiosamente la respuesta de Textdrive a mi ticket)
2009/7/1 David J,nas [email protected]
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.
Textdrive, apiádate de nosotros.
2009/7/1 David J,nas [email protected]
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
Centro Médico: <%= controller.action_name %>
<%= stylesheet_link_tag 'scaffold' %>
<%= javascript_include_tag :defaults %>
<%= flash[:notice] %>
<%= yield %>
<%= link_to ‘Logout’, :controller => ‘admin’, :action => ‘logout’ %>
Lo que quiero es que desde new cita pueda buscar los pacientes que tengo
2009/7/1 Juanjo Bazán [email protected]
Textdrive, apiádate de nosotros.
Raul M. 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.