Estoy tratando de hacer un sitio simple de reunión familiar con: "publicaciones", "familias", "niños" y "imágenes" . Idealmente me gustaría las rutas/relaciones para ser estructurados de esta manera:Rails 3 - Recursos anidados y rutas polimórficas: OK en dos niveles, pero romper en tres
resources :posts do
resources :pictures
end
resources :fams do
resources :pictures
resources :kids do
resources :pictures
end
end
En los modelos que tienen los necesarios "belongs_to
" y "has_many
" relaciones establecidas entre fams
y kids
. Fams
, kids
y posts
todos se definen con "has_many :pictures, :as => :imageable
", mientras que las imágenes se definen como:. belongs_to :imageable, :polymorphic => true
Al tratar de hacer link_to "Edit"
y link_to "Destroy"
en los pictures
vistas que me encuentro de todo tipo de _path
problemas polymoric_path
funciona bien en dos niveles, es decir, para posts-pictures
y fams-pictures
pero no puede manejar la caja de tres niveles de fams-kids-pictures
. Supongo que no fue diseñado para manejar los dos niveles de objetos "imageable
" por encima del objeto picture
. Otra cuestión es que en una instancia, el pictures
controlador tiene que manejar un recurso de anidación de recursos de "un nivel" situación y en otro tiene que manejar una situación de "dos niveles". No estoy seguro de cómo abordar esto.
Una cosa que sí intenté fue no anidar recursos de más de una profundidad, según las instrucciones de Ruby Guides. Los estructuré así:
resources :posts do
resources :pictures
end
resources :fams do
resources :pictures
resources :kids
end
resources :kids do
resources :pictures
end
Esto causó otro conjunto de problemas con las rutas ya que la relación de familia a hijo ya no se conservaba. Tampoco pude conseguir que polymorphic_path funcione correctamente en todas las diferentes vistas picture
.
Así que aquí está mi pregunta principal: ¿Alguien sabe de un ejemplo/tutorial de Rails 3 donde los recursos anidados, pertenece a/has_manía, y las relaciones polimórficas están todos juntos, especialmente donde no es solo el simple, dos- relación de nivel que muestra la mayoría de los ejemplos? (Soy bastante nuevo en Rails y los ejemplos de Rails 2 que he encontrado en estas áreas son confusos dada mi falta de experiencia histórica en Rails.)
¿O alguien puede decirme cómo estructurar las declaraciones link_to EDIT
y link_to DELETE
para mi picture
vistas, así como la instrucción redirect-to
para mis métodos create
, update
y destroy
en mi controlador pictures
?
Gracias!
Sí, he leído a través de ese artículo muchas veces. Lo encuentro muy superficial. Va por la simplicidad, pero no aborda cómo mantener las relaciones a través de los múltiples niveles. Agregue polimorfismo con las rutas dinámicas que requiere, y tiene un problema muy complejo que no ha sido bien abordado por nada que haya visto. Estoy al punto de que estoy a punto de eliminar el polimorfismo y comenzar a repetirme construyendo diferentes controladores de imagen para cada uno de mis modelos de datos principales. Mucho para SECO. –