作成したプロジェクトの投稿にユーザーがコメントできるアプリケーションを作成しています。このRailscastに従って、ポリモーフィックな関連付けを設定しました。
チュートリアルに基づいて、コントローラーのインデックス ページが以下のように設定され、localhost:3000/projects/1/comments に移動します。
質問: どのプロジェクトに投稿されたかに関係なく、すべてのコメントをリストするビューを作成したいので、代わりにインデックスを localhost:3000/comments にルーティングできるように、コントローラーでそれをルーティングして def インデックスを調整するにはどうすればよいですか? 現在、以下のルートとコードに基づいて、localhost:3000/comments にアクセスすると、次のエラーが発生するためです。
ActiveRecord::RecordNotFound in CommentsController#index
Couldn't find Comment without an ID
app/controllers/comments_controller.rb:32:in `load_commentable'
/app/controllers/comments_controller.rb
class CommentsController < ApplicationController
before_filter :load_commentable
def index
@comments = @commentable.comments
end
private
def load_commentable
resource, id = request.path.split('/')[1,2]
@commentable = resource.singularize.classify.constantize.find(id)
end
end
ルート.rb
resources :projects do
resources :comments
end
resources :comments