Rails - 未定义的方法`find'代表nil:NilClass(ActiveAdmin)

时间:2012-05-16 06:58:09

标签: ruby-on-rails ruby model activeadmin

说我有2个控制器。

advertiser_campaign和advertiser_ad。

我需要advertiser_ad成为advertiser_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

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

在我的advertiser_campaign模型中,我有

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

和我的advertiser_ad模型

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

有关此问题的任何帮助将受到高度赞赏。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

docs表示任何资源都在命名空间下注册。从您的示例中可以看出,您在没有明确指定命名空间的情况下尝试使用Advertiser::Ad类。尝试:

AdminAdmin::Advertiser::Ad

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