0

私は2つのコントローラを持っているとしましょう。

広告主_キャンペーンと広告主_広告。

広告主_広告を広告主_キャンペーンの子にする必要がありますが、私はアクティブ管理者 (およびルビー自体) にかなり慣れていないため、いくつか問題があります。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'

この問題に関するヘルプは非常に高く評価されます。前もって感謝します。

4

1 に答える 1

1

ドキュメントには、リソースは名前空間の下に登録されていると書かれています。Advertiser::Adあなたの例から、名前空間を明示的に指定せずにクラスを利用しようとしているように見えます。試す:

AdminAdmin::Advertiser::Ad

それでも問題が解決しない場合は、Rails コンソールを使用して (登録済みの名前空間/クラスを確認してください)、問題の根本をより迅速に突き止めてください。

于 2012-05-16T07:17:17.123 に答える