Xavier N. wrote:
2008/11/11 Carlos Belizón [email protected]:
Perdona mi ignorancia pero ¿Qué es una collection? Ya que la API de
Rails no me aclara mucho qué tiene de especial.
La version rapida: permite asociar rutas a otras acciones del
controlador.
Version larga: Supon que tienes una coleccion de recursos como
map.resources :posts
/posts
Un subconjunto de ese recurso se podria publicar como un recurso
individual
map.resource :recent_posts
/recent_posts
pero también queda bien publicar ese subconjunto como
/posts/recent
Para poder expresar eso (entre otras cosas) Rails ofrece esta opcion:
map.resources :posts, :collection => {:recent => :get}
que enruta por arte de birlibirloque a PostsController#recent.
Los :collection hay que tenerlos en cuenta si usas permalinks sin
leading IDs, ya que podria haber colisiones.
Pero me sigue quedando una duda bastante grande:
Dado que tengo sólamente dos modelos, Club y Jugador, de tal forma que
hay una relacion de 1:N de Club a Jugador expresada mediante:
Class Club < ActiveRecord::Base
has_many :jugadores
end
Class Jugador < ActiveRecord::Base
belongs_to :club
end
Y tengo actualmente las el fichero routes.rb asÃ:
ActionController::Routing::Routes.draw do |map|
map.resources :clubs, :has_many => [:jugadores]
map.connect ‘:controller/:action/:id’
map.connect ‘:controller/:action/:id.:format’
end
Teniendo en cuenta que he modificado el scaffold que crea por defecto
Rails para que funcione con las rutas anidadas, ¿Es posible modificar el
archivo routes de esta forma?
ActionController::Routing::Routes.draw do |map|
map.resources :clubs, :has_many => [:jugadores]
map.resources :jugadores
map.connect ‘:controller/:action/:id’
map.connect ‘:controller/:action/:id.:format’
end
Y modificar el controlador JugadoresController para que si el usuario
introduce la ruta:
/jugadores/
Se muestre la accion index de JugadoresController que muestre todas las
instancias de la tabla jugadores y que si introduzco la ruta:
/clubs/1/jugadores
Se muestre la accion index de JugadoresController que muestre todas las
instancias de la tabla jugadores que pertenecen al club con :id => 1.
¿Puedo hacer algo as�