Rutas REST


#1

Hola amigos,
estoy haciendo una pequeña aplicación para aprender Rails y luego poder
afrontar mi proyecto final de carrera. Tengo una duda sobre las rutas
REST, tengo lo siguiente:

map.resources :order

Y luego he creado un permalink, para no mostrar /orders/1, sino
/2009/10/30/mi-primer-pedido

def permalink
{ :year => sprintf("%4d", created_at.year), :month =>
sprintf("%02d", created_at.month),
:day => sprintf("%02d", created_at.day), :slug => slug }
end

before_create :build_permalink

protected

def build_permalink
value = self.name.gsub(/[^\x00-\x7F]/n, ‘’).to_s
value.gsub!(/[’]+/, ‘’)
value.gsub!(/\W+/, ’ ‘)
value.strip!
value.downcase!
value.gsub!(’ ', ‘-’)
self.permalink = value
end

Bien, lo que quiero ahora es tener las rutas de edit, update, y destroy,
pero que no sean del tipo:

/order/1/edit

Sino,

/2009/10/30/mi-primer-pedido/edit

Tampoco que se como montar el form_for

Si alguien me puede ayudar en algo, estaría muy agradedica.

Un saludo.


#2

Olvidé el contenido del fichero routes.rb

map.resources :orders
map.permalink ‘:year/:month/:day/:permalink’, :controller =>
‘orders’, :action => ‘show’, :year => /\d{4}/


#3

Como ya te comentan no haría falta crear un permalink, con jugar a
partir
del created_at y las variables que te indica Andrea pasadas por GET ya
te
ayudarían a conseguir la order en tu sistema persistente.
Así que si haces rutas para cada acción ya te valdría:

map.order_edit ‘:year/:month/:day/:permalink/edit’, :controller =>
‘orders’,
:action => ‘edit’
map.order ‘:year/:month/:day/:permalink’, :controller => ‘orders’,
:action
=> ‘show’, :year => /\d{4}/, :month => /\d{2}/, :day => /\d{2}/

Cuidado que el orden de las definiciones en el archivo de rutas importa.

On Sun, May 31, 2009 at 12:13 AM, Andrea Val <