我知道这是一个已回答的问题,但是今天,当我在数组上设置一个简单的映射时,这个问题又来了!
与普通地图不同,该地图使用as_json
def index
@allcomments = @commentable.comments.order('created_at desc')
.includes(:user,:replies).paginate page: params[:page]
@comments = @allcomments.map do |comment|
comment_json = comment.as_json
comment_json[:user] = comment.user.as_json
comment_json[:replies] = comment.replies.as_json
comment_json
end
render json: {
comments: @comments.paginate(page: page),
page: page,
pages: @comments.pages,
status: 200
}
end
因为答案应该放在初始化器上,require 'will_paginate/array'
,或者,ApplicationController
上,也应该放在注释控制器上!
因此,有人对will_paginate
的这一特定问题有任何线索吗?
答案 0 :(得分:2)
当您应用map
时,将产生一个原始数组,该数组失去了分页功能。您需要保留它。
您可以在此处解决此问题的一件事是为Comment编写一个as_json
方法,以正确实现您在map
中具有的逻辑,处理user
和{{1 }}正确编码。这里的目标是摆脱控制器中的这一步骤,将其移至其所属的模型中。
这将变成:
replies