Ruby / Rails - 嵌套资源的AJAX分页 - 如何确定父资源?

时间:2011-05-30 16:57:44

标签: ruby-on-rails ruby-on-rails-3 routing pagination nested-resources

我的模型有PostsUsersComments。用户可以在帖子上留下评论。 每个评论都属于用户和帖子。 因此,评论模型具有user_id字段和post_id字段。

查看Post时,我想通过该帖子的评论进行分页 查看User时,我想通过该用户的评论进行分页 我想使用AJAX(通过Kaminari gem)进行分页。

我为两者设置了嵌套路线。

在帖子上,被点击的网址是http://localhost:3000/posts/{:id}/comments?page={page_number}
在用户上,被点击的网址是http://localhost:3000/users/{:id}/comments?page={page_number}

这两个网址都在点击评论控制器的索引操作。

我的问题是:在index操作中,如何确定提供的{:id}user_id还是post_id,以便我可以检索所需的评论

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我喜欢Ryan Bates'方式

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