ネストしているRESTfulルートとネストしていないRESTfulルートを作り直すことを検討しComment
ます。あなたのモデルは次のようになっていると思います:
# app/models/image.rb
class Image < ActiveRecord::Base
has_many :comments
end
# app/models/comment.rb
class Comment < ActiveRecord::Base
belongs_to :image
end
あなたのモデルImage
とComment
モデルは 1 対多の関係を持っているため、コメント リソース ルートをイメージ 1 内にネストする理由がわかりました。ただし、 のすべての CRUD アクションのうち、comments_controller.rb
実際に 親イメージ ID を明示的に渡す必要があるのは だけです。、、、およびアクションはすべて、親イメージとは独立して実行できます。create
new
create
image_id
edit
update
delete
like
代わりに、別のルーティング スケマティックを検討してください。
# 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'
end
end
これで、親 ID に明示的に依存するコメント アクションのみが、実際にはイメージ ルート内にネストされます。残りのコメント アクションは、親 ID を渡さずに直接コメント コントローラーにルーティングされます。ルートが重複することはなくなり、各アクションには 1 つのルートが宣言されます。