我有一个用户模型,其中包含2个关联的模型配置文件和工作功能。用户有一个配置文件,但有许多工作功能可用于不同类型的工作。我想使用jbuilder将它们列为一个组合的json对象,如下所示:
{profile: { first_name: ...,
last_name: ...,
...
work_capabilities: [ { capability_1: ...,
...
},
...
]
}
}
目前,我可以通过明确列出所有配置文件密钥并使用json.extract!
来实现此目的 json.profile do
json.extract! @profile, :first_name, ...
json.work_capabilities @work_capabilities
end
我的问题是,我可以在不明确列出所有配置文件属性的情况下创建上述对象吗?我希望配置文件中的每个属性都不希望每次添加属性时都返回并编辑jbuilder文件。
答案 0 :(得分:0)
你可以通过在控制器中进行以下操作来实现这一目标
def index
@profile = User.find(params[:id]).profile
@capabilities = User.find(params[:id]).capabilities
end
然后在你的index.json.jbuilder
中json.user do
json.profile do
json.first_name @profile.first_name
json.last_name @profile.first_name
end
json.work_capabilities @work_capabilities.each do |work_capability|
json.capability_1 work_capability.capability_1
json.capability_2 work_capability.capability_2
.
.
.
end
end
答案 1 :(得分:0)
我认为这将解决您的问题
json.profile do
json.array! @profile_object
end