我有我的ActiveAdmin安裝多個資源共享同一性狀頗多,如:DRY-ING高達ActiveAdmin
- 相同或相似的範圍
- 相同或類似的控制器方法( action_methods,例如)在編輯動作中顯示動作
- 類似的屬性(與代碼塊
- 類似的屬性(與代碼塊))
避免在不同資源中複製此功能的最佳方法是什麼?
我已經設置了裝飾器,以避免在索引視圖中重複功能,但我不確定是否(以及如何?)這可以在其他情況下使用。
我有我的ActiveAdmin安裝多個資源共享同一性狀頗多,如:DRY-ING高達ActiveAdmin
避免在不同資源中複製此功能的最佳方法是什麼?
我已經設置了裝飾器,以避免在索引視圖中重複功能,但我不確定是否(以及如何?)這可以在其他情況下使用。
你需要用猴子補丁擴展DSL:
module ActiveAdmin
# This is the class where all the register blocks are evaluated.
class ResourceDSL < DSL
def your_custom_method attr
#common code
end
end
end
現在,您可以在您註冊的資源文件中使用your_custom_method。
https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/resource_dsl.rb
對不起,我遲到的回覆,我等着看有沒有人有其他建議,然後忘了它。所以這真的是最好的辦法嗎?哎喲。 – rogerkk 2015-01-08 10:14:14
您還可以extend
你的模塊。例如:
module AccountManageable
def has_manageable_account
permit_params :name, :email, :role, :avatar
filter :name, as: :string
filter :email, as: :string
# ... other DSL methods
end
end
,然後在你的管理
ActiveAdmin.register Admin do
extend AccountManageable
has_manageable_account
end
你有沒有看使用的擔憂? http://richonrails.com/articles/rails-4-code-concerns-in-active-record-models – 2014-12-05 23:25:48
我熟悉常見的模式,以便在常規的ruby(和rails)代碼中幹掉東西,但我有不知道如何將其綁定到ActiveAdmin及其語法。 :/ – rogerkk 2014-12-06 00:45:07