[Ror-es] Filtrar con Ajax Scaffold

Luis Villegas
Tue Mar 6 09:14:11 GMT 2007


Buenas.

Veo que en tu script pone:



¿seguro que el controlador se llama "incidencias"?¿no debería ser
"préstamos"?
Aparte, en component.rhtml no debería ir ir:

<%= render_component :controller => '/prestamos', :action => 'list', :params
=> params %>

porque se está llamando a sí mismo continuamente. Tienes que poner el código
en otro rhtml.


En cuanto a tu segunda duda:

Dices:
La primera línea filtro_estado = params[:filtro_estado] || "0", sino me
equivoco debe de recoger el valor de la selección del combo y si no se
realiza le asigna un 0.
Realmente sólo le asigna 0 si es nulo params[:filtro_estado]. Si está en
blanco, el valor de filtro_estado será una cadena vacía.
La condición sería algo así:
if params[:filtro_estado].blank?
    filtro_estado = params[:filtro_estado]
else
   filtro_estado = "0"
end

Y lo de que la fecha no sea null, no lo he entendido muy bien. Podrías
explicara los campos que tienes en el html y en la BD y qué es exactamente
lo que quieres que haga?

Un saludo








On 3/5/07, Fernando González Macías  wrote:
>
>  Hola Luis, muchas gracias por contestar.
>
>
>
> Respecto a tú código tengo dos problemas:
>
>
>
> 1)       El fichero .rhtml que estoy actualizando con tú código es el
> component.rhtml. Una vez que situo el siguiente código:
>
>
>
>
>
> 
> > <%= render_component :controller => '/prestamos', :action => > 'list', :params => params %> > >
> > > > > > > > > > Me entra en una especie de bucle, listándome continuamente el grid, junto > con el combo de selección, una y otra vez, hasta que me da un error. ¿No es > en este fichero donde hay que situar este código? > > > > 2) El segundo problema es con respecto, al código a introducir en el > controlador. Quiero filtrar por el estado de un campo fecha, en función de > que ese campo tenga valor o no, o bien que me muestre todos los registros. > Por lo tanto defino un combo de selección con préstamos Abiertos, Cerrados y > Todos. A los préstamos aún no devueltos se le asigna en el campo fecha de > devolución a NULL. El caso es que no tengo nada claro como definir la > condición para que el select la incorpore. > > > > > > Tengo lo siguiente en el controlador: > > > > def component > > > > filtro_estado = params[:filtro_estado] || "0" > > = true if .nil? > > = Prestamo.scaffold_columns_hash[current_sort(params)].sort_sql > rescue nil > > @sort_by = .nil? ? "#{Prestamo.table_name}.#{ > Prestamo.primary_key} asc" : + " " + > current_sort_direction(params) > > > > logger.debug("Valor de filtro_estado"+filtro_estado) > > case filtro_estado > > when '1' > > logger.debug("Valor 1") > > > > condiciones = ["fecha_devolucion = null"] > > when "2" > > logger.debug("Valor 2") > > > > condiciones = ["fecha_devolucion != null"] > > else > > logger.debug("Entra en ELSE") > > > > condiciones = ["fecha_devolucion != ?", '1900/01/01'] > > end > > > > > > > > , = paginate(:prestamos, :order => @sort_by, > :per_page => default_per_page, :conditions => condiciones ) > > > > render :action => "component", :layout => false > > end > > > > > > Aquí como es evidente tengo varias dudas. La primera línea filtro_estado = > params[:filtro_estado] || "0", sino me equivoco debe de recoger el valor de > la selección del combo y si no se realiza le asigna un 0. > > > > ¿Como puedo establecer que la fecha sea null o no null? Tal como lo he > puesto no me va. > > > > > Saludos y gracias….. > > > > > > Fernando González Macías > > > > > ------------------------------ > > *De:* [mailto: > ] *En nombre de *Luis Villegas > *Enviado el:* viernes, 02 de marzo de 2007 11:44 > *Para:* La lista sobre Ruby On Rails (rubyonrails.com) en castellano > *Asunto:* Re: [Ror-es] Filtrar con Ajax Scaffold > > > > yo lo tengo con un combo: > > en el rhtml > >
> Incidencias > estado: > > >
>
> <%= render_component :controller => '/incidencias', :action => > 'list', :params => params %> >
> > > En el controlador: > > def component > filtro_estado = params[:filtro_estado] || "(1,2,3,4,5,6,7,8)" > = true if .nil? > = Incidencia.scaffold_columns_hash[current_sort(params)].sort_sql > rescue nil > @sort_by = .nil? ? "#{Incidencia.table_name}.estado_id asc" : > + " " + current_sort_direction(params) > condiciones = ["estado_id in "+filtro_estado] > , = paginate(:incidencias, > :order => @sort_by, > :per_page => default_per_page, > :conditions => condiciones ) > > render :action => "component", :layout => false > end > > > A ver si te sirve > > > On 3/2/07, *Fernando González Macías* > wrote: > > Estoy realizando mi primer programa en RoR y utilizo Ajax Scaffold con el > generador. Me gustaría implementar algún tipo de filtrado en función de > algunas condiciones que se estableciera. Bien por el valor obtenido de un > Combo, o bien por un CheckBox. Imagino que esto hay que implementarlo en el > layout. > > > > ¿Alguien podría darme algún ejemplo? Y como la elección realizada modifica > el subconjunto de registros a visualizar. > > > > Saludos y gracias… > > > > Fernando González Macías > > fgonzalez @ grupojoly.com > > > > > > > _______________________________________________ > Ror-es mailing list > > > > > > _______________________________________________ > Ror-es mailing list > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.simplelogica.net/pipermail/ror-es/attachments/20070306/0c62d9d6/attachment-0001.htm