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.
Er3c E. (Guest)
on 2008-12-15 04: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
Daniel R. Troitiño (Guest)
on 2008-12-15 10:11
(Received via mailing list)
2008/12/15 Er3c Er3c <removed_email_address@domain.invalid>:
> 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.
Er3c E. (Guest)
on 2008-12-16 02:25

pero de que forma puedo meter un array en un select
Manuel González Noriega (Guest)
on 2008-12-16 02:50
(Received via mailing list)
2008/12/16 Er3c Er3c <removed_email_address@domain.invalid>

>
>
> 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.
Daniel R. Troitiño (Guest)
on 2008-12-16 02:55
(Received via mailing list)
On Tue, Dec 16, 2008 at 01:50, Manuel González Noriega
<removed_email_address@domain.invalid> wrote:
> 2008/12/16 Er3c Er3c <removed_email_address@domain.invalid>
>>
>>
>> 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.
Manuel González Noriega (Guest)
on 2008-12-16 03:00
(Received via mailing list)
2008/12/16 Daniel R. Troitiño <removed_email_address@domain.invalid>

>
> 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.
Er3c E. (Guest)
on 2008-12-16 09:24
Manuel González Noriega wrote:
> 2008/12/16 Daniel R. Troitiño <removed_email_address@domain.invalid>
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%>
Manuel González Noriega (Guest)
on 2008-12-16 11:11
(Received via mailing list)
2008/12/16 Er3c Er3c <removed_email_address@domain.invalid>

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