Потеря ассоциаций во вложенных частичках в Rails - PullRequest
0 голосов
/ 09 января 2011

У меня есть модель отчета, которая принадлежит модели местоположения. При доступе к объекту отчета во вложенной части я получаю нулевое значение для report.location, когда получаю желаемое значение в родительской части, а также в начальном представлении, которое включает в себя частичные значения.

Например,

в представлении действия с отчетами / индексами я могу сослаться на соответствующие местоположения для отдельных элементов в массиве @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) я получаю нулевое значение для связанного местоположения для каждого отдельного отчета:

report.location.name # undefined method `name' for nil:NilClass

Я пробовал варианты, и независимо от того, что я пробовал, кажется, что в этом вложенном частичном объекте, связанном с моим экземпляром Report, всегда ноль.

1 Ответ

1 голос
/ 10 января 2011

Вы рассчитываете, что в этом отчете всегда есть местоположение.Теперь, по крайней мере, один из них этого не делает.Используйте report.location.try(:name), чтобы обойти ошибку.

Если вы хотите сделать местоположение обязательным, добавьте эту проверку в модель отчета:

validates :location, :presence => true
...