Скажем, у меня есть 2 контроллера.Rails - неопределенный метод `find 'for nil: NilClass (ActiveAdmin)
advertiser_campaign и advertiser_ad.
Мне нужно, чтобы advertiser_ad был дочерним объектом advertiser_campaign, но поскольку я довольно новичок в activeadmin (и сам ruby), у меня возникают некоторые проблемы. Я пытаюсь сделать вложенный ресурс с помощью ActiveAdmin.
код ниже действительно регистрирует необходимые маршруты
ActiveAdmin.register Advertiser::Ad do
belongs_to :advertiser_campaign
end
НО когда я пытаюсь получить доступ к/администратора/advertiser_campaigns/1/advertiser_ads я получаю ошибку
NoMethodError in Admin::AdvertiserAdsController#index
undefined method `find' for nil:NilClass
Что, вероятно, означает, что маршруты работают достаточно хорошо и проблема находится где-то в контроллере. Я попытался переписать контроллер ActiveAdmin делать что-то вроде этого
controller do
def index
index! do |format|
@advertiser_ads = Advertiser::Ad.all
format.html
end
end
end
Но нет абсолютно никакого эффекта. Хотя я вижу, что контроллер пытается выполнить мой перезаписываемый контроллер, но встречает ту же ошибку.
В моей advertiser_campaign модели у меня есть
has_many :advertiser_ads, :class_name => 'Advertiser::Ad'
и в моей advertiser_ad модели
belongs_to :advertiser_campaign, :class_name => 'Advertiser::Campaign'
Любая помощь по этому вопросу будет высоко оценен. Спасибо заранее.
Согласно документам, которые вы мне прислали, пространство имен зарегистрировано следующим образом:: namespace =>: namespacename ", но это действительно не делает ничего, кроме разрыва маршрутов. В соответствии с этим пространство имен https://github.com/gregbell/active_admin/issues/78 не требуется для создания вложенных ресурсов. – Screatch
Да, это не требуется. Дело в том, чтобы выяснить, какое пространство имен по умолчанию назначено – gmile