Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用:include,:except,:仅用于rails渲染中的:方法的散列_Ruby On Rails_Json_Render_Rails Api - Fatal编程技术网

Ruby on rails 如何使用:include,:except,:仅用于rails渲染中的:方法的散列

Ruby on rails 如何使用:include,:except,:仅用于rails渲染中的:方法的散列,ruby-on-rails,json,render,rails-api,Ruby On Rails,Json,Render,Rails Api,我需要呈现行程json,但将所有TODO合并为嵌套在其中的单个json数组: render json: @itinerary, include: { places: { only: [:id, :title], include: { todos: {

我需要呈现行程json,但将所有TODO合并为嵌套在其中的单个json数组:

render json: @itinerary, include: {
                           places: {
                             only: [:id, :title],
                             include: {
                               todos: {
                                  only: [:id, :content],
                                  include: :todo_type
                               },
                               place_category: {
                                  include: {
                                       todos: {
                                           only: [:id, :content],
                                           include: :todo_type
                                       }
                                  }
                               },
                               climate: {
                                   include: {
                                       todos: {
                                           only: [:id, :content],
                                           include: :todo_type
                                       }
                                   }
                               }
                             }
                           }
                         } 
我希望将所有TODO呈现在一起,这样客户机就不必整合所有TODO、删除重复项以及对其执行其他工作

因此,我创建了一个方法,即todos就地模型

然后将我的渲染方法更改为

render json: @itinerary, include: {
                           places: {
                             only: [:id, :title],
                             include: :place_category,
                             methods: [:consolidated_todos],
                           }
                         }
如何添加:include:todo_type等,:only:id,:content等,以及:从:方法返回的哈希除外

我需要做一些类似方法的事情:[合并的todo:{include::todo_type}]

编辑:

这个问题不是关于

如何序列化资源 如何包含嵌套资源 使用jbuilder/activemodelserializer/RABL/类似的libs执行1或2
但是特别是关于使用include作为从:methods返回的散列或等效的短期解决方法,而不是使用as_json作为相同的

我认为您不能,甚至您可以,您可能应该创建不同的方法,在其中选择所需的数据,然后在渲染对象时使用它们。它将更易于阅读和维护。

我认为您不能,甚至可以,您可能应该创建不同的方法,在其中选择所需的数据,然后在渲染对象时使用它们。它将更易于阅读和维护。

在何处选择所需的数据,然后在渲染对象时选择这些数据:是否可以添加一个示例以使其更加清晰?我不明白你的意思,当你打破轨道时,给那些试图帮助你的人负面评价最佳实践:/。你可能还在想为什么没有得到更多的回复。需要一个详细的规范答案来解决所有的问题-你能更清楚一点吗?在何处添加这些方法以及如何在使用方法时调用它们:[]在何处选择所需的数据,然后在渲染对象时调用它们:您能否添加一个示例来说明这一点?我不明白你的意思,当你打破轨道时,给那些试图帮助你的人负面评价最佳实践:/。你可能还在想为什么没有得到更多的回复。需要一个详细的规范答案来解决所有的问题-你能更清楚一点吗?在何处添加这些方法以及在使用方法时如何调用它们:[]
render json: @itinerary, include: {
                           places: {
                             only: [:id, :title],
                             include: :place_category,
                             methods: [:consolidated_todos],
                           }
                         }