Ich würde in Betracht ziehen, die RESTful-Routen für Comment
zu überarbeiten, die Du verschachtelst, und welche nicht. Ich gehe davon aus, dass Deine Modelle ungefähr so aussehen:
# app/models/image.rb
class Image < ActiveRecord::Base
has_many :comments
end
# app/models/comment.rb
class Comment < ActiveRecord::Base
belongs_to :image
end
Weil Deine Image
und Comment
Modelle eine Beziehung eins zu vielen besitzen, kann ich verstehen, warum Du denkst, die Routen für Kommentare innerhalb der Bilder-Routen zu verschachteln. Allerdings erfordert im comments_controller.rb
von allen CRUD-Aktionen nur create
tatsächlich, dass explizit eine Eltern-Image-ID übergeben wird. Aus einer RESTful-Perspektive erfordern nur die Aktionen new
und create
, dass eine image_id
an die Aktion übergeben wird. Die Aktionen edit
, update
, delete
und like
können unabhängig vom Elternbild stattfinden.
Betrachte stattdessen das alternative Routing-Schema:
# config/routes.rb
resources :images do
resources :comments, :only => [:index, :new, :create]
end
resources :comments, :only => [:show, :edit, :update, :destroy] do
member do
post 'like'
Jetzt sind nur die Kommentaraktionen die explizit von einer Eltern-ID abhängig sind tatsächlich innerhalb der Bilder-Routen verschachtelt. Die restlichen Kommentaraktionen werden direkt an den Kommentar-Controller geroutet, ohne die Eltern-ID zu übergeben. Deine Routen sind nicht mehr dupliziert, und für jede Aktion wird genau eine Route dafür deklariert.