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.
Juan M. (Guest)
on 2006-12-23 20: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
Xavier N. (Guest)
on 2006-12-23 23:43
(Received via mailing list)
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?

> </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
Juan M. (Guest)
on 2006-12-28 02: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....
Xavier N. (Guest)
on 2006-12-28 18:38
(Received via mailing list)
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):

   <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
Juan M. (Guest)
on 2006-12-30 23: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.
Xavier N. (Guest)
on 2006-12-31 02:32
(Received via mailing list)
On Dec 30, 2006, at 10:51 PM, Juan M. 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
Juan M. (Guest)
on 2007-01-06 03: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
Xavier N. (Guest)
on 2007-01-06 20:30
(Received via mailing list)
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
This topic is locked and can not be replied to.