Итак, я генерирую свой скаффолд в рельсах, и он создает обычные файлы CRUD. В моем представлении я копирую форму, найденную в new.html.erb, и вставляю ее в index.html.erb, чтобы я мог создать новую запись из своего индекса. Когда я это делаю, я постоянно получаю следующую ошибку, независимо от того, что я делаю.

Called id for nil, which would mistakenly be 4 -- if you really wanted
the id of nil, use object_id

Я устал искать ответы по всему Интернету и только что узнал, что это называется плаксивым нулем (не очень помогает). Я пробовал переименовывать свои переменные экземпляра, использовать заглавные буквы, использовать глобальные переменные и т. д., но расстраивает то, что в Rails нет библиотеки документации ошибок. Кто-нибудь может помочь?

1
Joel 15 Июн 2009 в 17:29
У меня такая же проблема не знаю как решить
 – 
ecleel
23 Дек 2009 в 11:01

2 ответа

Есть ли в вашем контроллере все необходимые объекты? Похоже, он вызывает что-то.id, но этого чего-то не существует в вашем действии index. Посмотрите на все сообщение об ошибке — в нем должно быть указано, какая строка ее вызывает, затем проверьте эту строку в исходных файлах на наличие отсутствующей переменной.

6
Toms Mikoss 15 Июн 2009 в 18:26

В вашем контроллере вам нужно добавить код, найденный в new, в индекс (я думаю, это что-то вроде @model = Model.new). Или лучше: создайте частный метод с именем expose_new или что-то в этом роде, переместите туда общий код и добавьте before_filter :expose_new, :only => [:index, :new].

Просто примечание.

Если бы я был вами, я бы сделал частичную форму из вашей формы в новой и отобразил ее как в индексе, так и в новой (и вполне возможно отредактировал, если все они равны), поэтому вам не нужно копировать и вставлять ее.

Таким образом, вы получите один _form.html.erb, который включает в себя форму, а в new и index у вас есть <%= render('form') %>

2
Thorbjørn Hermansen 15 Июн 2009 в 20:29
Я вложил код своих методов «новый» и «создать» в свой метод «индекс», но он не работает. Вы что-то другое конкретно имели в виду?
 – 
Joel
15 Июн 2009 в 22:49
Можете ли вы опубликовать код для вашего индексного действия и вашего индексного представления?
 – 
mikej
16 Июн 2009 в 11:55