Forum: Rails-ES Problemas para crear text_field_with_auto_complete

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
E840f61fb1814fd454114aa1e1876b19?d=identicon&s=25 Juan Moreno (elgocho)
on 2006-12-23 19:10
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.

<html>
   <head>
      <%= javascript_include_tag 'prototype'%>
     <TITLE>Consulta de Datos...</TITLE>
  </head>
  <body>

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 %><br>
             <div id="dato"></div>
             <%= submit_tag "Consulta" %>

     <%= end_form_tag %>
   </body>
</html>

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
7223c62b7310e164eb79c740188abbda?d=identicon&s=25 Xavier Noria (Guest)
on 2006-12-23 22:43
(Received via mailing list)
On Dec 23, 2006, at 7:10 PM, Juan Moreno 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?

> </html>
>
> 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
E840f61fb1814fd454114aa1e1876b19?d=identicon&s=25 Juan Moreno (elgocho)
on 2006-12-28 01:23
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....
7223c62b7310e164eb79c740188abbda?d=identicon&s=25 Xavier Noria (Guest)
on 2006-12-28 17:38
(Received via mailing list)
On Dec 28, 2006, at 1:23 AM, Juan Moreno 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):

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

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

-- fxn
E840f61fb1814fd454114aa1e1876b19?d=identicon&s=25 Juan Moreno (elgocho)
on 2006-12-30 22:51
> 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):
>
>    <ul>
>      <% @users.each do |user| %>
>      <li><%= h(user.name) %></li>
>      <% end %>
>    </ul>
>
> 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
                          }

   <label>Nombre:</label>
   <%= text_field_with_auto_complete :profesore, :cedula %>
   <ul>
     <% @profesore.each do |profesore| %>
     <li><%= h(profesore.cedula) %></li>
     <% end %>
   </ul>
<%= 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.
7223c62b7310e164eb79c740188abbda?d=identicon&s=25 Xavier Noria (Guest)
on 2006-12-31 01:32
(Received via mailing list)
On Dec 30, 2006, at 10:51 PM, Juan Moreno wrote:

>>    <ul>
> 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.

>
>    <label>Nombre:</label>
>    <%= text_field_with_auto_complete :profesore, :cedula %>
>    <ul>
>      <% @profesore.each do |profesore| %>
>      <li><%= h(profesore.cedula) %></li>
>      <% end %>
>    </ul>
> <%= end_form_tag %>

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

   <%= form_remote_tag ... %>
     <label>Nombre:</label>
     <%= 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
E840f61fb1814fd454114aa1e1876b19?d=identicon&s=25 Juan Moreno (elgocho)
on 2007-01-06 02:31
>
>    <%= form_remote_tag ... %>
>      <label>Nombre:</label>
>      <%= 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
7223c62b7310e164eb79c740188abbda?d=identicon&s=25 Xavier Noria (Guest)
on 2007-01-06 19:30
(Received via mailing list)
On Jan 6, 2007, at 2:31 AM, Juan Moreno 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
This topic is locked and can not be replied to.