Ruby on rails rails-显示嵌套的查找哈希
我正在尝试显示此查找的输出-Ruby on rails rails-显示嵌套的查找哈希,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正在尝试显示此查找的输出- @test = User.joins(:plans => [:categories => [:project => :presentations]]).where(current_user.id) 这是我的输出循环 <% @test.each do |p| %> <%= p.plans %> <% p.plans.each do |d| %> <%= debug(d) %>
@test = User.joins(:plans => [:categories => [:project => :presentations]]).where(current_user.id)
这是我的输出循环
<% @test.each do |p| %>
<%= p.plans %>
<% p.plans.each do |d| %>
<%= debug(d) %>
<% d.categories.each do |e| %>
<% e.project.each do |r| %>
<%= debug(r) %>
<% end %>
<% end %>
<% end %>
<% end %>
我的关系是这样的
使用者
有很多:用户计划
计划
有很多:用户计划
_和_是否属于多个类别
类别
有一个:项目
有很多计划吗
项目
有多个:演示文稿,:依赖=>:全部删除
演示
属于:项目
我需要改变我的发现吗
谢谢,亚历克斯
类别有一个:项目
因此它是单个对象而不是集合,因此没有每个方法
类别有一个:项目
因此,它是单个对象而不是集合,因此没有每个方法。根据您的关系定义,类别只有一个项目,那么您为什么要迭代e.project?如果只想显示调试输出,请替换
<% e.project.each do |r| %>
<%= debug(r) %>
<% end %>
与
但如果您想更深入地了解演示文稿,请执行以下操作:
<%= debug(e.project) %>
<% e.project.presentations.each do |presentation| %>
<%= debug(presentation) %>
<% end %>
根据您的关系定义,Category只有一个项目,那么您为什么要迭代e.project?如果只想显示调试输出,请替换
<% e.project.each do |r| %>
<%= debug(r) %>
<% end %>
与
但如果您想更深入地了解演示文稿,请执行以下操作:
<%= debug(e.project) %>
<% e.project.presentations.each do |presentation| %>
<%= debug(presentation) %>
<% end %>
您的问题是您正在调用数组方法。每个方法都在单个对象上
category.project将为您提供单个项目对象,对吗?这不是一个数组,所以不能对其分别调用
替换此项:
<% e.project.each do |r| %>
<%= debug(r) %>
<% end %>
在这里,还有一些建议:使用描述性变量名。为什么“p”代表测试,“d”代表计划,“e”代表类别,等等?变量名应该告诉您对象是什么。类似地,我希望变量@test保存一个测试对象。在代码中,它似乎是一个数组。对包含该类型对象集合的变量使用复数变量名-例如@plans将是一个计划对象数组
乙二醇
这不是更可读吗?您的问题是调用数组方法。每个方法都在单个对象上
category.project将为您提供单个项目对象,对吗?这不是一个数组,所以不能对其分别调用
替换此项:
<% e.project.each do |r| %>
<%= debug(r) %>
<% end %>
在这里,还有一些建议:使用描述性变量名。为什么“p”代表测试,“d”代表计划,“e”代表类别,等等?变量名应该告诉您对象是什么。类似地,我希望变量@test保存一个测试对象。在代码中,它似乎是一个数组。对包含该类型对象集合的变量使用复数变量名-例如@plans将是一个计划对象数组
乙二醇
这不是更具可读性吗?那是我的黑客行为,有点懒惰完成版看起来像你的:)那是我的黑客行为,有点懒惰完成版看起来像你的:)
<% e.project.each do |r| %>
<%= debug(r) %>
<% end %>
debug(e.project)
<% @tests.each do |test| %>
<% test.plans.each do |plan| %>
<%= debug(plan) %>
<% plan.categories.each do |category| %>
<%= debug(category.project) %>
<% end %>
<% end %>
<% end %>