我想知道在多个资源中使用问题时实现控制器操作的最佳方法是什么。
作为一个例子,假设我有一个名为commentable的问题,看起来像这样:
concern :commentable do
resources :comments
end
并且有两个资源有这个问题,例如
resources :posts, :concerns => :commentable
resources :pages, :concerns => :commentable
因此,如果我希望将评论附加到帖子或页面,请获取以下网址
/posts/4/comments
/pages/6/comments
我的问题是,因为这两个网址都映射到同一个控制器/操作,区分评论是附加到帖子还是页面的最佳方法是什么?
天真的实现可能如下所示:
class CommentsController < ApplicationController
def index
if params[:post_id]
respond_with Post.find(params[:post_id]).comments
elsif params[:page_id]
respond_with Page.find(params[:page_id]).comments
end
end
end
但是,当我添加更多可评论的资源时,我将不得不在if语句(或大小写或其他)中添加更多个案。有没有更好的方法呢?