我需要一些帮助我有一个控制器,其中有一个动作可以查询两个模型。 现在我需要将它们作为json发送,以便在我的角度视图中使用。
在下面的示例中,我应该如何在一个json响应中发送“complex”及其“fields”?
实施例
def complexes_and_fields
complex = Complex.find(params[:id])
search_params = {complex_id: complex._id}
fields = Field.where(search_params)
if !complex.nil?
render json: ???.to_json, status: :ok
else
render json: { error_description: 'no complex found' },status: :bad_request
end
答案 0 :(得分:1)
一种简单的方法是使用对象构建哈希
complex = Complex.find(params[:id])
search_params = {complex_id: complex._id}
fields = Field.where(search_params)
render json: { complex: complex, fields: fields, search_params: search_params }, status: :ok
另一种方法是使用some_view.json.erb
这样的视图来渲染对象,就像在角度视图中一样。您也可以使用ActiveModelSerializers,阅读https://github.com/rails-api/active_model_serializers
理想情况下,您要做的是将此响应封装到其对象中,并在控制器中进行一次调用,返回结果
没有像这样的太多细节
results = MyComplexFieldsObj.response(params[:id])
render son: results, status: :ok
答案 1 :(得分:0)
这是Rails应用程序中非常常见的要求。这种需求很少局限于单个模型或单个位置。因此,存在各种宝石来提供这种功能(在许多情况下,不会大幅改变render
行的签名。)
This post提供了一个很好的列表。就个人而言,我对active_model_serializers和葡萄实体的可接受经验有很好的体验。审核他们的文档并确定哪种文档最适合您是合理的。