关注控制器行动

时间:2014-02-11 11:01:13

标签: ruby-on-rails ruby-on-rails-4 routes

我想知道在多个资源中使用问题时实现控制器操作的最佳方法是什么。

作为一个例子,假设我有一个名为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语句(或大小写或其他)中添加更多个案。有没有更好的方法呢?

0 个答案:

没有答案