2016-08-15 69 views
0

如果我有三個資源, 當我在一個資源聲明belongs_to的,它工作得很好Rails的主動管理路徑消失

ActiveAdmin.register Order 
ActiveAdmin.register Material do 
    belongs_to :order 
end 

這會產生以下

batch_action_admin_order_materials POST  /admin/orders/:order_id/materials/batch_action(.:format) admin/materials#batch_action 
      admin_order_materials GET  /admin/orders/:order_id/materials(.:format)    admin/materials#index 
            POST  /admin/orders/:order_id/materials(.:format)    admin/materials#create 
      new_admin_order_material GET  /admin/orders/:order_id/materials/new(.:format)   admin/materials#new 
     edit_admin_order_material GET  /admin/orders/:order_id/materials/:id/edit(.:format)  admin/materials#edit 
       admin_order_material GET  /admin/orders/:order_id/materials/:id(.:format)   admin/materials#show 
            PATCH  /admin/orders/:order_id/materials/:id(.:format)   admin/materials#update 
            PUT  /admin/orders/:order_id/materials/:id(.:format)   admin/materials#update 
            DELETE  /admin/orders/:order_id/materials/:id(.:format)   admin/materials#destroy 

但是,當路徑我添加了設置屬於另一個資源的相同資源,上面的路徑全部消失了,取而代之的是生成下面的路徑

ActiveAdmin.register Supplier 
ActiveAdmin.register Material do 
    belongs_to :supplier 
end 



batch_action_admin_supplier_materials POST  /admin/suppliers/:supplier_id/materials/batch_action(.:format) admin/materials#batch_action 
      admin_supplier_materials GET  /admin/suppliers/:supplier_id/materials(.:format)    admin/materials#index 
             POST  /admin/suppliers/:supplier_id/materials(.:format)    admin/materials#create 
      new_admin_supplier_material GET  /admin/suppliers/:supplier_id/materials/new(.:format)   admin/materials#new 
     edit_admin_supplier_material GET  /admin/suppliers/:supplier_id/materials/:id/edit(.:format)  admin/materials#edit 
       admin_supplier_material GET  /admin/suppliers/:supplier_id/materials/:id(.:format)   admin/materials#show 
             PATCH  /admin/suppliers/:supplier_id/materials/:id(.:format)   admin/materials#update 
             PUT  /admin/suppliers/:supplier_id/materials/:id(.:format)   admin/materials#update 
             DELETE  /admin/suppliers/:supplier_id/materials/:id(.:format)   admin/materials#destroy 

我希望有這兩種路徑,不希望它們消失。 任何人都可以幫忙,謝謝!

+0

嗨,歡迎來到Stack Overflow。很難弄清楚你的意思...你可以請擴展一下「不好用」嗎?您能否解釋一下:您觀察到的情況以及您期望看到的結果,以及您收到的任何實際的錯誤信息? –

回答

0

好的,所以問題是你寫了ActiveAdmin.register Material兩次 - 第二個覆蓋第一個。

(也不應該使用的belongs_to的線小寫)

而不是寫兩次的,既belongs_to內一次把它寫如:

ActiveAdmin.register Order 
ActiveAdmin.register Supplier 
ActiveAdmin.register Material do 
    belongs_to :order 
    belongs_to :supplier 
end 
+0

感謝您的幫助。我在order.rb中寫了第一個'ActiveAdmin.register Material',在supplier.rb中寫了第二個。那麼,我應該把你提到的代碼放在哪裏? PS:訂單和材料之間的關係是一對多關係,供應商和材料也是一對多關係。訂單和材料之間沒有直接關係。 –

+0

我會把第一行按順序,第二行在供應商,其餘在一個新的文件稱爲材料 –

+0

您好Taryn,再次感謝。我試過你的解決方案,仍然有兩個問題。其一,在將'ActiveAdmin.register Material'移出到material.rb之後。該頁面在管理::訂單#索引中顯示錯誤「ActionController :: UrlGenerationError」無路徑匹配{:action =>「index」,:controller =>「admin/materials」}缺少必需的鍵:[:order_id]' '舉起ActionController :: UrlGenerationError,消息' –

0

可能是你可以嘗試重新命名資源:Rename Resource

所以你material.rb將conatin:

ActiveAdmin.register Material do 
    belongs_to :order 
end 

您可以創建新的文件supplier_materials.rb其中將包含:

ActiveAdmin.register Material, as: "Supplier Material" do 
    belongs_to :supplier 
end 

這會工作作爲兩個獨立的資源。