Limitar resultados


#1

Buenas

Tengo esta instrucción que crea un loop y pinta tantos checkbox (u
opciones)
como tengo en la base de datos. Es decir si tengo 20 pinta 20 checkbox,
si
5, pinta 5. El caso es que yo quiero limitar a 5 los checkbox que se
muestren (tengo actualmente unos 20) y luego si el usuario quiere ver
mas,
enseñar el resto con un enlace tipo “mas” (que desplegaría con jquery).
Alguien tiene idea de como limitar este resultado?

<% for characteristic in @characteristics %>




  • <%=characteristic.name%>


<% end %>

<% end %>

Un saludo a la lista y muchas gracias


#2

Puedes hacerlo del lado del servidor, poniendo :limit => 5 en tu
sentencia
find en el controlador y luego, al pulsar el más sin el :limit, o del
lado
de cliente así:

.li_oculto{ display:none; }

<% @characteristics.each_with_index do |characteristic, i| %>




  • <%=characteristic.name%>


<% end %>

#3

Creo que no me has entendido. Te decía que puedes limitar a 5 en el
controlador y pasarle un parámetro que sea mostrar_mas = true una vez
que
pinches en el botón de ver más.

Esa era una opción. La otra es la que te he puesto. Le pasas toda la
consulta a la página y la muestras como te he dicho.

Si lo has limitado, el botón no va a funcionar porque javascript no
llama al
servidor en esa funcioncilla que te he pasado.

Entiendo que la logica de lo que propones es esta: si el contador es > 4
usa la clase ocultar para el resto de los checkbox correcto? Con el
javascript le quitas la clase ocultar y se ven todos… No obstante y en
caso de q funcionara el boton de “ver mas” este se sigue quedando al final
de la lista.

Eso hace la lógica del código que te pasé. Luego al pulsar el botón ver
todos, se mostrarían todos y se ocultaría el botón con
this.style.display=‘none’. Para asegurarte de que se esconda el botón
haz:

Se me ocurre esta solucion un poco chapuzera (no soy programador)

q te parece?

Se puede hacer mucho más fácil, que es la manera que te decía del lado
del
servidor.

Que el método sea:

def el_metodo

@characteristics = Characteristic.find(:all, :order => “name”, :limit
=>
limite )
end

<% for characteristic in @characteristics %>




  • <%=characteristic.name%>


<% end %>

<% end %>

El día 27/07/07, Luis V. removed_email_address@domain.invalid escribió:


#4

Hola Luis ,

Muchas gracias por tu respuesta.

He limitado el numero de resultados en el controlador a 5 y ahora solo
se
muestarn los 5 pero el javascript no funciona.
Entiendo que la logica de lo que propones es esta: si el contador es > 4
usa
la clase ocultar para el resto de los checkbox correcto? Con el
javascript
le quitas la clase ocultar y se ven todos… No obstante y en caso de q
funcionara el boton de “ver mas” este se sigue quedando al final de la
lista.

Se me ocurre esta solucion un poco chapuzera (no soy programador)

En el controlador
@characteristics = Characteristic.find(:all, :order => “name”)
creo uno nuevo limitado a 5
@characteristics2 = Characteristic.find(:all, :order => “name”, :limit
=> 5
)

y con jquery al pulsar en ver mas oculto el div q tiene la llamada al
charactericts2 (el q muestra solo 5) y muestro el characteristics (que
tiene todos)

q te parece?

El día 27/07/07, Luis V. removed_email_address@domain.invalid escribió:


#5

Perdón, le dí a enviar. Éste es el correo bueno:

Creo que no me has entendido. Te decía que puedes limitar a 5 en el
controlador y pasarle un parámetro que sea mostrar_mas = true una vez
que
pinches en el botón de ver más.

Esa era una opción. La otra es la que te he puesto. Le pasas toda la
consulta a la página y la muestras como te he dicho.

Si lo has limitado, el botón no va a funcionar porque javascript no
llama al
servidor en esa funcioncilla que te he pasado.

Entiendo que la logica de lo que propones es esta: si el contador es > 4
usa la clase ocultar para el resto de los checkbox correcto? Con el
javascript le quitas la clase ocultar y se ven todos… No obstante y en
caso de q funcionara el boton de “ver mas” este se sigue quedando al final
de la lista.

Eso hace la lógica del código que te pasé. Luego al pulsar el botón ver
todos, se mostrarían todos y se ocultaría el botón con
this.style.display=‘none’. Para asegurarte de que se esconda el botón
haz:

Se me ocurre esta solucion un poco chapuzera (no soy programador)

q te parece?

Se puede hacer mucho más fácil, que es la manera que te decía del lado
del
servidor.

Que el método sea:

def el_metodo
#Si no se le pasa ningún parámetro(primera vez que accedes al
método),
entrará en el “else”, si se le pasa, pondrá una variable en el request
para
controlar que se muestre o no el enlace “ver todos”
if params[:mostrar_mas]
@se_muestra_el_enlace = false
else
limite = 5
@se_muestra_el_enlace = true
end
@characteristics = Characteristic.find(:all, :order => “name”, :limit
=>
limite )

render :partial => ‘mi_metodo’
end

Y en la vista, guárdala como _mi_metodo.rhtml

<% for characteristic in @characteristics %>




  • <%=characteristic.name%>


<% end %>

<% end %>
<%if se_muestra_el_enlace%>
<%=link_to_remote “ver todos”, :url => { :action => “el_metodo”,
:mostrar_mas => true} %>
<%end%>

A ver si te vale esto. Un saludo

Ese link_to_remote crea una función ajax que llamará a tu método en el
servidor, pero esta vez pasándole un parámetro: mostrar_mas.


#6

Muchas gracias Luis,

A final te cuento como lo he hecho (disculpa la chapuza)

Sin tocar el controlador he adaptado tu codigo con JQuey

<% @characteristics.each_with_index do |characteristic, i| %>
  • <%= characteristic.name%>
<% end %>

Add categories to your search

El codigo de Jquery

He añadido un div porque al quitar la visibilidad del los checkboxes el
div
donde estaba no modificaba la altura y seguia tan “alto” como cuando
pintaba
los 20 checkboxes.

un saludo cordial y muy muy agradecido por tu ayuda.

Fernando
El día 27/07/07, Luis V. removed_email_address@domain.invalid escribió:


#7

Creo que esto es lo que buscas

http://errtheblog.com/post/929

Saludos.

On Friday 27 July 2007 13:50:36 Luis V. wrote:

Si lo has limitado, el botón no va a funcionar porque javascript no llama
this.style.display=‘none’. Para asegurarte de que se esconda el botón haz:

charactericts2 (el q muestra solo 5) y muestro el characteristics (que
#Si no se le pasa ningún parámetro(primera vez que accedes al método),

    <input class="checkbox" id="<%=characteristic.id%>"

:mostrar_mas => true} %>

controlador y pasarle un parámetro que sea mostrar_mas = true una vez que

javascript le quitas la clase ocultar y se ven todos… No obstante y

> q te parece? end > > } > > <% end %> > > > Buenas > > >
    > > > Un saludo a la lista y muchas gracias > > Ror-es mailing list > removed_email_address@domain.invalid > http://lists.simplelogica.net/mailman/listinfo/ror-es

Aldo Villagra
…–""|
| |
| .—’
(-.–| |---------.
/ ) \ | |
|:. | | | |
|:. | |o| |
|:. | " |
|:. |_ __ __ _ __ /
""""“”|=|"""""""
|=_|
jgs |= |