我想知道是否有人可以提供帮助。我正在尝试为我们的 API 迁移旧的 Rails Model#to_json,以便从长远来看更容易进行版本控制。由于 Rabl 和 Will Paginate,我在第一个障碍中挣扎。
我们目前覆盖 WillPaginate::Collection#as_json
module WillPaginate
class Collection
alias :as_json_without_paginate :as_json
def as_json(options = {})
# RABL seemingly passing JSON::Ext::Generator::State into as_json
unless options.is_a?(Hash)
options = {}
end
json = {
:page => current_page
:per_page => per_page,
:total_entries => total_entries,
:entries => as_json_without_paginate(options)
}
end
end
end
所以@collection.to_json 会返回类似
{
"total_entries": 1,
"page": 1,
"entries": [
{
"follow": {
"id": 1,
"name": "TEST"
}
}
],
"per_page": 10
}
但是,当我尝试在 RABL 中执行以下操作时
node(:page) {|m| @follows.current_page }
node(:per_page) {|m| @follows.per_page }
node(:total_entries) {|m| @follows.total_entries}
child(@follows => :entries) do
# extends 'follows/show'
attributes :id, :name
end
孩子的名字会自动设置为“entry”,我想将其设置为“follow”以与我们当前的 API 保持一致,但没有任何运气。
{
"total_entries": 1,
"page": 1,
"entries": [
{
"entry": {
"id": 1,
"name": "TEST"
}
}
],
"per_page": 10
}
任何人都可以给我任何指示。我一直在尝试追溯源头,似乎总是暗示孩子的根对象名称的名称。