2

私のモデルにはPostsUsers、およびがありCommentsます。ユーザーは、投稿に対してコメントを残すことができます。すべてのコメントは、ユーザーと投稿に属します。したがって、Comment モデルにはuser_idフィールドとフィールドがありpost_idます。

を表示するときにPost、その投稿のコメントをページ分割したいと思います。
を表示するときにUser、そのユーザーのコメントをページ分割したいと思います。
AJAX (Kaminari gem 経由) を使用してページネーションを行いたい。

ネストされたルートを両方に設定しました。

投稿では、ヒットしhttp://localhost:3000/posts/{:id}/comments?page={page_number}
た URL ユーザーでは、ヒットした URL はhttp://localhost:3000/users/{:id}/comments?page={page_number}

どちらの URL も、コメント コントローラーのインデックス アクションにヒットしています。

私の質問は次のとおりです。アクション内で、提供されたものが aまたは aであるindexかどうかを判断して、目的のコメントを取得できるようにするにはどうすればよいですか。{:id}user_idpost_id

4

2 に答える 2

1

コメント コントローラーで次のことを確認params[:user_id]params[:post_id]ます。

if params[:user_id]
  #call came from /users/ url
elsif params[:post_id]
  #call came from /posts/ url
else
  #call came from some other url
end
于 2011-05-30T20:18:41.333 に答える
0

ライアン・ベイツのやり方が好き

class CommentsController
  before_action :load_commentable

  def index
    @comments = @commentable.comments.page(params[:page])
  end

  private

    def load_commentable
      klass = [Post, User].detect { |c| params["#{c.name.underscore}_id"] }
      @commentable = klass.find(params["#{klass.name.underscore}_id"])
    end
end
于 2014-03-06T10:53:10.277 に答える