Hola, soy nuevo en Ruby on Rails y me he dispuesto a hacer una tienda
virtual en Ruby como proyecto fin de carrera.
Mi primera duda es como puedo hacer un select que mediante AJAX para
seleccionar opciones y luego mostrar ordenado inmediatamente al
seleccionar una opcion. Tengo este codigo:
tienda/index.rhtml
<%= javascript_include_tag “prototype” %>
[Catalogo]
/*
Aqui iria el Select para mostrar ordeados productos por nombre,
unidades o precio con AJAX o ruby
*/
<% for producto in @productos_precio %>
<%= h(producto.nombre) %>
<%= producto.descripcion %>
Disponibles: <%= producto.unidades %>
Precio: <%= producto.precio %>
<% end %>
<%= pagination_links(@pagina_productos_precio)%>
Para el actionRecord tengo este codigo:
tienda/tienda_controller.rb
class TiendaController < ApplicationController
def index
@pagina_productos_nombre, @productos_nombre = paginate(:producto,
:order => ‘nombre’, :per_page => 9)
@pagina_productos_precio, @productos_precio = paginate(:producto,
:order => ‘precio’, :per_page => 9)
@pagina_productos_unidades, @productos_unidades =
paginate(:producto, :order => ‘unidades’, :per_page => 9)
end
end
Mi otra duda es que muestro los productos por filas, pero me gustaria
saber como hacer para mostrar 3 productos por fila, es decir poder
mostrarlos de manera que aparezcan en columnas.
Muchas gracias de antemano
On 04/11/2007, Eduardo B. [email protected] wrote:
</ul>
<% end %>
<%= pagination_links(@pagina_productos_precio)%>
Para el actionRecord tengo este codigo:
No sé si te entiendo muy bien, creo que quieres poder ordenar
productos por distintos criterios. En el controlador haces tres
paginaciones simultáneas en función de orden cuando sólo necesitarías
una, discriminando por un parámetro pasado por el usuario.
Primero olvídate del bendito/maldito Ajax y crea un simple select que
pase un parámetro “orden”. En el controlador discriminarás por ese
parámetro para elegir el ‘order by’ que le pasas a la búsqueda.
Cuando todo funcione bien de forma tradicional, te preocupas del Ajax,
que en cuanto oimos la palabreja nos tiramos todos a correr antes de
andar como mastines oliendo un bistec sanguinolento.
Mi otra duda es que muestro los productos por filas, pero me gustaria
saber como hacer para mostrar 3 productos por fila, es decir poder
mostrarlos de manera que aparezcan en columnas.
Pues depende del marcado, pero con CSS y floats sería trivial. El
problema principal que puede adivinarse es que el fragmento de código
HTML que muestras está tan lleno de errores que es completamente
inviable. ¿Tienes conocimientos de HTML o cuentas con la ayuda de
alguien que te pueda construir una vista apropiada? Sólo partiendo de
una vista válida y bien construida podrás tener el diseño visual que
esperas.
–
Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o http://simplelogica.net/logicola/
Recuerda comer mucha fruta y verdura.
Gracias Manuel. Ya he conseguido mediante la hoja de estilo el tabular
los datos por columnas. Lo que sigo sin saber como hacer es para el
select, he modificado el tienda_controller.rb asi:
class TiendaController < ApplicationController
def index(parametro)
@pagina_productos_nombre, @productos_nombre = paginate(:producto,
:order => parametro, :per_page => 9)
end
end
No se si la sintaxis es la adecuada, lo que pretendo es mediante el paso
de ese parametro que me pagine y muestre los resultados ordenados por
nombre, unidades o precio segun se lo indique en el select.
El rhtml lo he puesto asi, pero no se como poner el select para pasar
dicho parametro al codigo ruby, empece hace dos dias con ruby on rails y
estoy algo perdido, tengo que pasarlo con un post? alguna manera de
recoger el parametro y pasarselo al rb para que lo gestione?
rhtml:
Catalogo de productos
Ordenar por:
nombre
precio
unidades
<% for producto in @productos_precio %>
-
<%= h(producto.nombre) %>
<%= producto.descripcion %>Precio: <%=
producto.precio %>
<% end %>
On 05/11/2007, Eduardo B. [email protected] wrote:
class TiendaController < ApplicationController
def index(parametro)
@pagina_productos_nombre, @productos_nombre = paginate(:producto,
:order => parametro, :per_page => 9)
end
end
No tienes que pasar “parametro” a index, los parametros de la
peticiónte llegan en el hash params sin que tengas que hacer nada para
recibirlos. Lo manejarías con algo así como params[:order]
El rhtml lo he puesto asi, pero no se como poner el select para pasar
dicho parametro al codigo ruby, empece hace dos dias con ruby on rails y
estoy algo perdido, tengo que pasarlo con un post? alguna manera de
recoger el parametro y pasarselo al rb para que lo gestione?
Como digo, los parámetros (post y get) te llegan en el hash params,
así que no tienes que hacer practicamente nada.
De todas formas, el problema es, como tú apuntas, que te faltan
conocimientos de base de Rails. Sería más práctico que dedicases un
tiempo a formarte, mediante los tutoriales y libros de los que se ha
hablado mucho en la lista, para tener claros conceptos muy básicos
como estos antes de acometer cualquier proyecto relevante, y más algo
como un proyecto de fin de carrera.
–
Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o http://simplelogica.net/logicola/
Recuerda comer mucha fruta y verdura.