Ciao, la mia webapp è così strutturata:
DATABASE TABLE:
products:id, name, category_id(references categories(id),…
categories:id, name;
APP/CONTROLLER:
site_controller.rb
def list
@category_pages, @category = paginate :category, :per_page => 30
end
def list_cat
@product_pages,@category, @product = paginate :category, :per_page
=> 30
end
APP/VIEW/SITE
list.rhtml
<table cellpadding="5" cellspacing="0">
<%
odd_or_even = 0
for category in @category
odd_or_even = 1 - odd_or_even
cat = category.name
%>
<tr valign="top" <%= odd_or_even %>">
<td>
<%= link_to cat, :action => 'list_cat', :id => category
%>
<% end %>
list_cat.rhtml
Qui vorrei creare la lista dei prodotti presenti in una determinata
categoria...
In pratica quello che vorrei è creare in list.rhtml una specie di menu
con tutte le categorie, e ognuna di queste sia un link_to list_cat.rhtml
che visualizza tutti i prodotti presenti in quella categoria
Qualcuno può aiutarmi?
Grazie, baci a tutti
Chiara
p.s.
Come faccio a configurare il file routes.rb affinchè il controller
riesca a leggermi una richiesta così strutturata:
site/list_cat/category_id (cos’ funzionerebbe, ma dopo non mi funziona
più list.rhtml la quale mi prende come parametro id e non category_id
Grazie ancora
Ciao Chiara per capire come funziona l’associazione alle categorie ti
consiglio di seguire attentamente la guida che trovi al seguente
indirizzo:
per la personalizzazione degli url e del routes.rb alcune info le puoi
trovare su di un mio precedente post:
http://www.ruby-forum.com/topic/132470#new
Chiara B. wrote:
p.s.
Come faccio a configurare il file routes.rb affinchè il controller
riesca a leggermi una richiesta così strutturata:
site/list_cat/category_id (cos’ funzionerebbe, ma dopo non mi funziona
più list.rhtml la quale mi prende come parametro id e non category_id
Grazie ancora
Se non ho capito male dall’esempio del messaggio precedente, site è il
tuo controller (scrivevi APP/VIEW/SITE)
Se è così non c’è bisogno di configurare routes.rb
Infatti con un’url tipo http://www.server.com/site/list_cat/category_id
category_id finisce in params[:id] nel metodo list_cat del controller
site
Se invece site fosse il tuo server (http://site/list_cat/category_id)
puoi usare questa rotta:
map.connect “list_cat/:id”, :controller => “list_cat”, :action => “cat”
che mette category_id dentro a params[:id] e lo passa al metodo cat del
controller list_cat.
Infine, sistemato questo magari potresti vedere come usare
link_to_remote al posto di link_to, per aggiornare solo il pezzo di menu
che vai ad espandere. Un po’ di AJAX non fa mai male 