Я следую RailsTutorial, и в настоящее время я застрял на упражнении 10.5.5 . Поскольку я немного меняюсь, я поместил код в paste (обновлено).
Есть несколько вещей, на которые следует обратить внимание, прежде чем перейти к вставке:
- Один из исходных частичных атрибутов получает коллекцию от своего «родительского», а другой получает объект непосредственно от контроллера.
- Оператор
if
в обоих этих "дочерних" частичках использует другое имя объекта, но они представляют один и тот же объект в базе данных.
В идеале, я бы хотел переместить оператор if
в внука, или суб-суб-, частичный. Я могу оставить его в ребенке частично, если это будет необходимо, но это не СУХОЙ.
Я пытался отрисовать парчальный внук с помощью <%= render partial: 'shared/foo', object: bar, as: :baz %>
, чтобы я мог использовать baz
в парциальном внуке, так как другой дочерний партиал по умолчанию использует baz
. В этой части я просто делаю <%= render partial: 'shared/foo', object: baz %>
. Смущенный? Я тоже.
Вы заметите, что я пытался рендерить партиалы как с родительским объектом, так и без него. Может быть, родительский объект нужно переопределить? Я тоже только что попробовал <%= render partial: 'shared/micropost_delete_link', object: feed_item %>
, но не повезло.
Каждый подход, который я пробовал до сих пор, приводит к одной и той же ошибке в тестах:
Failure/Error: before { visit root_path }
ActionView::Template::Error:
undefined method `user' for :feed_item:Symbol
Это указывает на то, что я не могу передать один объект, полученный от родительской опции collection: @feed_items
.
Обновление: В моей оригинальной пасте была опечатка. После исправления в обновленной пасте мои тесты по-прежнему не проходят.
Failure/Error: before { visit root_path }
ActionView::Template::Error:
undefined method `user' for nil:NilClass