Итак, я генерирую свой скаффолд в рельсах, и он создает обычные файлы 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 нет библиотеки документации ошибок. Кто-нибудь может помочь?
2 ответа
Есть ли в вашем контроллере все необходимые объекты? Похоже, он вызывает что-то.id, но этого чего-то не существует в вашем действии index. Посмотрите на все сообщение об ошибке — в нем должно быть указано, какая строка ее вызывает, затем проверьте эту строку в исходных файлах на наличие отсутствующей переменной.
В вашем контроллере вам нужно добавить код, найденный в new, в индекс (я думаю, это что-то вроде @model = Model.new
). Или лучше: создайте частный метод с именем expose_new или что-то в этом роде, переместите туда общий код и добавьте before_filter :expose_new, :only => [:index, :new]
.
Просто примечание.
Если бы я был вами, я бы сделал частичную форму из вашей формы в новой и отобразил ее как в индексе, так и в новой (и вполне возможно отредактировал, если все они равны), поэтому вам не нужно копировать и вставлять ее.
Таким образом, вы получите один _form.html.erb, который включает в себя форму, а в new и index у вас есть <%= render('form') %>
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.