2

我的模特有Posts,UsersComments。用户可以对帖子发表评论。 每条评论都属于用户和帖子。 因此,评论模型有一个user_id字段和一个post_id字段。Ruby/Rails - 嵌套资源的AJAX分页 - 如何确定父资源?

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

我有我的两个嵌套路线设置。

论后,被击中的URL是http://localhost:3000/posts/{:id}/comments?page={page_number}
在用户,被击中的URL为http://localhost:3000/users/{:id}/comments?page={page_number}

两个URL被击中评论控制器的索引行为。

我的问题是这样的:index动作里面,我怎么确定是否提供{:id}user_idpost_id这样我就可以检索所需的意见。

+0

可以与request.env [ “HTTP_REFERRER”]正则表达式检查它的例。如果有用户匹配如此:id属于用户反之亦然 – bor1s 2011-05-30 18:54:33

回答

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 
+0

这么简单!谢谢! – johnnycakes 2011-06-01 02:50:19

+0

这些父资源ID不存在,或者这在Rails 4中似乎不是真的,至少在我已经构建的应用程序中。 – SWoo 2013-11-07 23:11:53

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