我的模型有Posts
,Users
和Comments
。用户可以在帖子上留下评论。
每个评论都属于用户和帖子。
因此,评论模型具有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
,以便我可以检索所需的评论
答案 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