У меня есть приложение для рельсов, которое имеет модель chart
, а chart
имеет datasource
. A datasource
может иметь много datapoints
. В моем chart create
метод у меня есть следующие строки:Модель оценивается до нуля, если объявлено в блоке «if»
@chart = Chart.new(chart_params)
@chart.datasource = Datasource.find_by_id(2)
@chart.save
Это прекрасно работает - хотя это не то, что я пытаюсь сделать. То, что я пытаюсь сделать, это следующее:
if @chart.id == 2
@chart.datasource = Datasource.find_by_id(2)
@chart.save
end
Когда я делаю это, тем не менее, я получаю NoMethodError in Charts#show
undefined method 'datapoints' for nil:NilClass
Ошибка в моем Charts#show
генерируется начиная с:
<% @chart.datasource.datapoints.each do |c| %>
dates.push("<%= c.date %>")
counts.push(<%= c.count %>)
<% end %>
Помните, что это работает отлично, если я жестко закодирую идентификатор источника данных за пределами блока if, задаваясь вопросом, что может быть причиной это.
Вы пробовали 'Datasource.find (2)'? – Dawcars
@ Dawcars, да, у меня есть и это дает мне ту же ошибку. По какой-то причине @ chart.datasource равен нулю. Но только если объявлено в 'if'. –
У вас есть карта с id == 2? – Dawcars