Forum: Rails-ES como hacer consultas

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.
E936ee2d31cdd812559da5c2ebd0610d?d=identicon&s=25 Er3c Er3c (er3c)
on 2008-12-15 03:32
Hola que tal, tengo una aplicacion con varias tablas y quiero poner los
nombres de cada tabla en un select para que el usuario seleccione la
tabla a consultar pero no he podido hacerlo.
esta linea me devuelve un array con los nombres de todas las tablas
      @tablas=ActiveRecord::Base.connection.tables
pero como le hago para poner cada una como opcion del select_tag he
intentado :

<%=select_tag 'tabla', options_from_collection_for_select(@tablas) %>

y en caso de que se pueda como le hago para poder hacer el tabla.find
:all ya que tablas seria un string ya que no es lo mismo "Curso".find
:all que Curso.find :all
49b6123803e4f327144e991daab62f77?d=identicon&s=25 Daniel Rodriguez Troitiño (Guest)
on 2008-12-15 09:11
(Received via mailing list)
2008/12/15 Er3c Er3c <ruby-forum-incoming@andreas-s.net>:
> y en caso de que se pueda como le hago para poder hacer el tabla.find
> :all ya que tablas seria un string ya que no es lo mismo "Curso".find
> :all que Curso.find :all

Como bien dices el resultado de .tables es un array de los nombres de
las tablas, por lo que no puedes utilizar
options_from_collection_for_select:

<%= select_tag 'tabla' options_for_select(@tablas) %>

Y como bien dices no puedes hacer "Curso".find :all. Pero tienes que
darte cuenta de que tus tablas se llamarán "cursos" no "Curso", por lo
que debes utilizar los métodos de Rails classify y constantize:

"cursos".classify # => "Curso"
"cursos".classify.constantize # => Curso
"cursos".classify.constantize.find :all # => tus resultados...

Suerte.
E936ee2d31cdd812559da5c2ebd0610d?d=identicon&s=25 Er3c Er3c (er3c)
on 2008-12-16 01:25

pero de que forma puedo meter un array en un select
5c15703984caa012845b3cea129da936?d=identicon&s=25 Manuel González Noriega (Guest)
on 2008-12-16 01:50
(Received via mailing list)
2008/12/16 Er3c Er3c <ruby-forum-incoming@andreas-s.net>

>
>
> pero de que forma puedo meter un array en un select
>

Consulta la documentación de los helpers de formularios con más
detenimiento. Y, por favor, cuida un poco la redacción de los mensajes.
49b6123803e4f327144e991daab62f77?d=identicon&s=25 Daniel Rodriguez Troitiño (Guest)
on 2008-12-16 01:55
(Received via mailing list)
On Tue, Dec 16, 2008 at 01:50, Manuel González Noriega
<manuel.gonzalez.noriega@gmail.com> wrote:
> 2008/12/16 Er3c Er3c <ruby-forum-incoming@andreas-s.net>
>>
>>
>> pero de que forma puedo meter un array en un select
>
> Consulta la documentación de los helpers de formularios con más
> detenimiento. Y, por favor, cuida un poco la redacción de los mensajes.
>

Y lee los mensajes que te responden, sobre todo aquellos que te dan la
solución.
5c15703984caa012845b3cea129da936?d=identicon&s=25 Manuel González Noriega (Guest)
on 2008-12-16 02:00
(Received via mailing list)
2008/12/16 Daniel Rodriguez Troitiño <notzcoolx@yahoo.es>

>
> Y lee los mensajes que te responden, sobre todo aquellos que te dan la
> solución.
>

Jajajaja, yo pequé de lo mismo y me salté tu respuesta ;)

Gracias, Daniel.
E936ee2d31cdd812559da5c2ebd0610d?d=identicon&s=25 Er3c Er3c (er3c)
on 2008-12-16 08:24
Manuel González Noriega wrote:
> 2008/12/16 Daniel Rodriguez Troitiño <notzcoolx@yahoo.es>
Gracias por su ayuda es exactamente lo que queria hacer muchisimas
gracias.
funciono de maravilla.

Ahora lo que quiero es hacer que me muestre todos los campos de cada
registro lo intento hacer con ciclo recorriendo un array con los nombres
de la tabla seleccionada. pero no puedo hacer  propedeuticos."id" lo que
quiero es que tome la cadena como metodo he intente con
nombredelatabla.method(variable)
pero no funciono. les agradeceria su ayuda.
aqui esta el codigo:
controlador consultas accion resultado:
  def resultado
      @tbl=params[:tabla]
      @resultados=@tbl.classify.constantize.find :all
      nombre_tabla="Describe "+ @tbl
      @campos=ActiveRecord::Base.connection.select_values(nombre_tabla)
  end
y esto en la vista:

   <label><h1>Resultados de la consulta</h1></label>
   <b><%=@tbl.upcase %></b><br>
    <%@tablaactual=[]%>
    <%i=0%>
    <%for campo in @campos%>
       <%@tablaactual[i]= campo%>
       <%i+=1%>
      <%#=resultado.method(campo) %>
    <%end%>
    <%n=0%>
#este es otro intento
    <% for resultado in @resultados %>
    <%= m=@tablaactual[n]%><br>
    <%x=resultado.method(m) %>
   <%=x.call%>
   <%n+=1%>
   <%end%>
5c15703984caa012845b3cea129da936?d=identicon&s=25 Manuel González Noriega (Guest)
on 2008-12-16 10:11
(Received via mailing list)
2008/12/16 Er3c Er3c <ruby-forum-incoming@andreas-s.net>

>
Por favor, describe exactamente en qué punto tienes algún problema y
cuál es
el problema exactamente ("no me funcionó" no sirve) Además, empieza un
nuevo
hilo con un asunto que refleje tu problema y no uses un mismo hilo a
modo de
"línea abierta". Muchas gracias :)
This topic is locked and can not be replied to.