0

假设我有 2 个控制器。

广告客户活动和广告客户广告。

我需要advertisingr_ad 成为advertisingr_campaign 的孩子,但是由于我对activeadmin(以及ruby 本身)还很陌生,所以我遇到了一些问题。我正在尝试使用 ActiveAdmin 做一个嵌套资源。

下面的代码确实注册了所需的路线

ActiveAdmin.register Advertiser::Ad do
  belongs_to :advertiser_campaign
end

但是当我尝试访问 /admin/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

但是绝对没有效果。虽然我看到控制器尝试执行我自定义覆盖的控制器但遇到相同的错误。

在我的 ads_campaign 模型中,我有

has_many :advertiser_ads, :class_name => 'Advertiser::Ad'

在我的 ads_ad 模型中

belongs_to :advertiser_campaign, :class_name => 'Advertiser::Campaign'

任何有关此问题的帮助将不胜感激。先感谢您。

4

1 回答 1

1

文档说任何资源都在命名空间下注册。从您的示例看来,您正在尝试在Advertiser::Ad没有明确指定命名空间的情况下使用类。尝试:

AdminAdmin::Advertiser::Ad

无论如何,如果这没有帮助,请使用 rails 控制台(检查已注册的命名空间/类)来更快地找出问题的根源。

于 2012-05-16T07:17:17.123 回答