0

我有一个属于 Location 模型的 Report 模型。当访问嵌套部分中的报表对象时,当我在父部分以及包含部分的初始视图中获得所需的值时,我得到了 report.location 的 nil 值。

例如,

在报告/索引操作的视图中,我可以参考 @reports 数组中各个元素的相关位置并获得所需的值:

@reports[0].location.name # Works

从这个角度来看,我渲染了一个部分:

render :partial => "reports/reports_table", :locals => { :reports => @reports }

在报告表部分中,我仍然可以引用报告数组中单个元素的位置并获得一个可能的值:

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 实例关联的嵌套部分对象中总是为零。

4

1 回答 1

1

你指望那个报告总是有一个位置。现在至少其中一个没有。用于report.location.try(:name)绕过错误。

如果您想强制设置位置,请将此验证添加到您的报告模型中:

validates :location, :presence => true
于 2011-01-09T21:03:15.930 回答