Problemas para crear text_field_with_auto_complete


#1

Saludos a la comunidad de RoR la siguiente pregunta es para ver quien me
puede ayudar para crear text_field_with_auto_complete pues quiero darle
la facilidad a un usuario de buscar fácilmente los nombres, tengo una
tabla llamada usuarios con los siguientes atributos id_usuario(auto
increment) , clave, nombe y email, en mi view hice lo siguiente.

<%= javascript_include_tag 'prototype'%> Consulta de Datos...

form_remote_tag :html => { :action => url_for(:controller =>
‘dato’,
:action => ‘ver’),
:method => :post }

         <label>Nombre:</label>
         <%= text_field_with_auto_complete 'usuario', 'nombre',

‘size’
=>20 %>


<%= submit_tag “Consulta” %>
 <%= end_form_tag %>

Pero nada me funciona no se si tengo que agregar mas cosas en mi view o
que tengo que hacer en el controller dato y que tengo que hacer dentro
del controller dato en el metodo ver. Pues en verdad quisiera ver como
funciona text_field_with_auto_complete.

Si alguien me puede ayudar con un ejemplo o orientarme con el
text_field_with_auto_complete en RoR, se lo agradezco de antemano.

Que pasen feliz navidad y Prospero año nuevo
Gracias


#2

On Dec 23, 2006, at 7:10 PM, Juan M. wrote:

Saludos a la comunidad de RoR la siguiente pregunta es para ver
quien me
puede ayudar para crear text_field_with_auto_complete pues quiero
darle
la facilidad a un usuario de buscar fácilmente los nombres, tengo una
tabla llamada usuarios con los siguientes atributos id_usuario(auto
increment)

Es una base de datos antigua? Si no lo fuera lo normal en Rails es
que esa columna se llame simplemente “id”. El autocompletadoo usa
"nombres, supongo que el “nombe” de arriba sera una errata en el mail.

                       'dato',
                       :action => 'ver'),
                       :method => :post }

Aqui falta markup verdad?

Pero nada me funciona no se si tengo que agregar mas cosas en mi
view o
que tengo que hacer en el controller dato y que tengo que hacer dentro
del controller dato en el metodo ver. Pues en verdad quisiera ver como
funciona text_field_with_auto_complete.

Si la accion en el controlador se llama como toca lo mejor en estos
casos es instalar FireBug en Firefox y ver que pinta tiene la llamada
(si se produce), y la respuesta.

Piensa de todos modos que el nombre raramente determina el registro,
con ese autocompletado recibiras en el controlador un nombre como
cadena, que puede no existir (por ediciones del usuario en el campo
de texto) y puede no ser unico, ni rastro del id.

– fxn


#3

Ayuda para crear text_field_with_auto_complete pues quiero

darle
la facilidad a un usuario de buscar fᣩlmente los nombres, tengo una
tabla llamada usuarios con los siguientes atributos id_usuario(auto
increment)

Es una base de datos antigua? Si no lo fuera lo normal en Rails es
que esa columna se llame simplemente “id”. El autocompletadoo usa
"nombres, supongo que el “nombe” de arriba sera una errata en el mail.

                       'dato',
                       :action => 'ver'),
                       :method => :post }

Si la accion en el controlador se llama como toca lo mejor en estos
casos es instalar FireBug en Firefox y ver que pinta tiene la llamada
(si se produce), y la respuesta.

Piensa de todos modos que el nombre raramente determina el registro,
con ese autocompletado recibiras en el controlador un nombre como
cadena, que puede no existir (por ediciones del usuario en el campo
de texto) y puede no ser unico, ni rastro del id.

– fxn

El error continua pues creo que el problema esta en el controller, ya
que no estoy mostrando los nombres de los usuarios que quiero mostrar en
el text_field, no entiendo el text_field_with_auto_complete, si alguien
tiene un ejemplo lo agradezco…


#4

On Dec 28, 2006, at 1:23 AM, Juan M. wrote:

El error continua pues creo que el problema esta en el controller, ya
que no estoy mostrando los nombres de los usuarios que quiero
mostrar en
el text_field, no entiendo el text_field_with_auto_complete, si
alguien
tiene un ejemplo lo agradezco…

Claro, si pusiste

<%= text_field_with_auto_complete :user, :name %>

en el controlador has de tener una accion llamada (ves el patron)

auto_complete_for_user_name

que devuelva una partial de este estilo (escrito sobre la marcha):

    <% @users.each do |user| %>
  • <%= h(user.name) %>
  • <% end %>

donde se asume que @users es el array de LIMIT usuarios que hacen
matching en esa query.

– fxn


#5

On Dec 30, 2006, at 10:51 PM, Juan M. wrote:

esta
forma:

form_remote_tag :html => {:action => url_for(:controller => ‘gaia’,
:action =>
‘auto_complete_for_profesore_cedula’),
:method => :post
}

Aun no has llegado a enviar el form, pero dale un repaso a la
documentacion, veras que has de revisar las opciones. Por otro lado,
el auto completado no necesita vivir en un formulario creado con
form_remote_tag. Aunque el campo de texto completa por Ajax el
formulario que lo contiene no tiene por que ser Ajax. Seguramente
querras un form Ajax, pero te lo comento por si acaso.

Nombre:
<%= text_field_with_auto_complete :profesore, :cedula %>

    <% @profesore.each do |profesore| %>
  • <%= h(profesore.cedula) %>
  • <% end %>
<%= end_form_tag %>

En la pagina inicial no va esa lista. Quita todo el UL:

<%= form_remote_tag … %>
Nombre:
<%= text_field_with_auto_complete :profesore, :cedula %>
<%= end_form_tag %>

y haz que la accion auto_complete_for_profesore_cedula devuelva una
partial
con el UL como explicaba en el mail anterior. En la pagina
original no ha de aparecer la variable @profesore, se usa solo en la
partial.

– fxn


#6

Claro, si pusiste

<%= text_field_with_auto_complete :user, :name %>

en el controlador has de tener una accion llamada (ves el patron)

auto_complete_for_user_name

que devuelva una partial de este estilo (escrito sobre la marcha):

    <% @users.each do |user| %>
  • <%= h(user.name) %>
  • <% end %>

donde se asume que @users es el array de LIMIT usuarios que hacen
matching en esa query.

– fxn
Amigo tengo otro problema hice lo que me dijiste mi página quedo de esta
forma:

form_remote_tag :html => {:action => url_for(:controller => ‘gaia’,
:action =>
‘auto_complete_for_profesore_cedula’),
:method => :post
}

Nombre:
<%= text_field_with_auto_complete :profesore, :cedula %>

    <% @profesore.each do |profesore| %>
  • <%= h(profesore.cedula) %>
  • <% end %>
<%= end_form_tag %>

y mi controller

class GaiaController < ApplicationController
def auto_complete_for_profesore_cedula
@profesore = Profesore.find_by_sql(“select cedula from
profesores”)
end
end

Y el error que me da es el siguiente:
You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.each

Gracias de Antemano.


#7

On Jan 6, 2007, at 2:31 AM, Juan M. wrote:

Gracias Xavier leí lo que me dijiste ya todo funciona a la perfección,
también arregle lo de cerrar y abrir una pagina sin sobreponerse,

Estupendo!

lo que
me falta ahora es arreglar un problema que tengo con las sessiones
pues
no se por que después de crear la session tengo un error de nil

La sesion la crea Rails (salvo que le digas que no lo haga). Como es
que la intentas crear?

– fxn


#8

<%= form_remote_tag … %>
Nombre:
<%= text_field_with_auto_complete :profesore, :cedula %>
<%= end_form_tag %>

y haz que la accion auto_complete_for_profesore_cedula devuelva una
partial
con el UL como explicaba en el mail anterior. En la pagina
original no ha de aparecer la variable @profesore, se usa solo en la
partial.

– fxn

Gracias Xavier leí lo que me dijiste ya todo funciona a la perfección,
también arregle lo de cerrar y abrir una pagina sin sobreponerse, lo que
me falta ahora es arreglar un problema que tengo con las sessiones pues
no se por que después de crear la session tengo un error de nil