【发布时间】:2012-08-28 13:47:57
【问题描述】:
我有一个属于位置模型的报表模型。在嵌套部分中访问报表对象时,当我在父部分以及包含部分的初始视图中获得所需的值时,我会为 report.location 获得一个 nil 值。
例如,
在报告/索引操作的视图中,我可以参考@reports 数组中各个元素的相关位置并获得所需的值:
@reports[0].location.name # Works
从这个角度,我渲染了一个部分:
render :partial => "reports/reports_table", :locals => { :reports => @reports }
在reports_table 部分中,我仍然可以引用报告数组中单个元素的位置并获得一个可能的值:
reports[0].location.name # Works
从这个视图中,我为本地报告数组的每个单独元素渲染一个部分:
reports.each do |report|
render :partial => "reports/report_display_row", :locals => { :report => report }
end
但在这个二级部分 (report_display_row) 中,我得到每个单独报告的关联位置的 nil 值:
report.location.name # undefined method `name' for nil:NilClass
我尝试了变体,无论我尝试了什么,似乎在这个与我的 Report 实例关联的嵌套部分对象中始终为零。
【问题讨论】:
-
你从第二个嵌套部分中的 report.class 得到什么?
-
这里没有任何问题......我能看到的唯一可能的事情是 Rails 对局部变量和枚举变量同名感到困惑。尝试 reports.each do |r|...:report => r 看看你是否得到相同的结果