[英]ActiveAdmin 1.0.0 belongs_to - Unable to autoload Parent
我正在使用Rails gem 'activeadmin', '~> 1.0.0.pre2'
,並且到目前為止已經能夠在我的項目中成功使用它。 幾個(大約10個)對象可以對其執行CRUD,有些甚至包括指向其他表的外鍵。 好東西!
我遇到的問題是,我必須通過belongs_to
關系顯示幾個對象,但是當我在其ActiveAdmin模型注冊中的子對象上放置一個belongs_to
時,嘗試在本地運行WEBrick時出現以下錯誤:
=> Booting WEBrick
=> Rails 4.2.4 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Exiting
/.rvm/gems/ruby-2.2.4/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:495:in `load_missing_constant': Unable to autoload constant Admin::ParentClass, expected /app/admin/parent_class.rb to define it (LoadError)
這是當前存在的模型和ActiveAdmin注冊:
app / models / parent_class.rb
class ParentClass < ActiveRecord::Base
has_many :sub_objects
end
app / admin / parent_class.rb
ActiveAdmin.register ParentClass do
permit_params :title
end
app / models / sub_object.rb
class SubObject < ActiveRecord::Base
belongs_to :parent_class
end
app / admin / sub_object.rb
ActiveAdmin.register SubObject do
belongs_to :parent_class
permit_params :name
end
使用上述設置,我仍然收到錯誤: Unable to autoload constant Admin::ParentClass, expected /app/admin/parent_class.rb to define it (LoadError)
......但如果我注釋掉belongs_to
在應用程序/管理/ sub_object.rb,它工作正常(但路線/admin/parent_classes/{id}/sub_objects
沒有定義,並且不工作)
為什么會這樣?為了進行這項工作(我在上段中所述的路線),我需要做什么?
在Timo (ActiveAdmin項目成員)對我輸入的Github問題的一些幫助下,我得以弄清楚:
belongs_to :parent_class, class_name: "::ParentClass"
這似乎也與我的特定項目有關,因為我無法在裝有最新Active Admin 1.0.0 gem並已安裝(在不具有class_name
屬性的情況下, belongs_to
工作)的香草Rails 4應用程序中對其進行重現。
它不是“標准” Rails應用程序,因為我們有一個“主”應用程序在具有Angular前端的主名稱空間中運行API,然后在其自己的/ admin名稱空間中運行ActiveAdmin為我們處理許多重復的CRUD操作。 但是直到現在,ActiveAdmin仍能正常工作。
如果有時間,我將調查為什么在我的項目中需要class_name,但是除了確保它真正起作用之外,我可能只是不問就繼續。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.