【问题标题】:Losing associations in nested partials in Rails在 Rails 的嵌套部分中丢失关联
【发布时间】: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 看看你是否得到相同的结果

标签: ruby-on-rails partials


【解决方案1】:

您指望该报告始终有一个位置。现在至少其中一个没有。使用report.location.try(:name) 绕过错误。

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

validates :location, :presence => true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    相关资源
    最近更新 更多