2015-12-02 25 views
1

我在ActiveAdmin中成功註冊資源時出現問題,但無法創建或更新任何記錄。我認爲這是由於命名空間問題。我可以在註冊資源時使用選項覆蓋它嗎?使用ActiveAdmin的Rails引擎中的資源命名空間問題

我正在構建一個Rails引擎,它從引擎中註冊AA資源。我按照說明here

我的引擎包含的lib /管理/ myengine/myresources.rb

if defined?(ActiveAdmin) 
    ActiveAdmin.register Myengine::Myresource do 
    end 
end 

在測試/虛擬應用程序,相關的架構看起來像:

create_table "myengine_myresources", force: :cascade do |t| 
    t.string "name" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
end 

當我運行虛擬應用服務器,我成功導航到http://localhost:3000/admin/myengine_myresources,然後單擊「新建MyWease MyResource」

我輸入名稱並單擊「創建Myresource」,但它將請求視爲已提交bla nk屬性值。

服務器日誌顯示:

Started POST "/admin/myengine_myresources" for ::1 at 2015-12-02 11:13:52 -0800 
Processing by Admin::MyengineMyresourcesController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"stuff", "myresource"=>{"name"=>"Arbitrary Name"}, "commit"=>"Create Myresource"} 
    (0.1ms) begin transaction 
    (0.1ms) rollback transaction 
    Rendered /Users/me/.rvm/gems/ruby-2.2.3/gems/activeadmin-1.0.0.pre2/app/views/active_admin/resource/new.html.arb (190.7ms) 
Completed 200 OK in 231ms (Views: 199.4ms | ActiveRecord: 0.2ms) 

我的工作原理是,PARAMS需要在裏面:myengine_myresource而不僅僅是:myresource。

有關如何獲得這項工作的任何想法?

回答

2

這裏有一個解決方法:

if defined?(ActiveAdmin) 
    ActiveAdmin.register Myengine::Myeresource do 
    controller do 
     def permitted_params 
     params[:myengine_myresource] = params.delete :myresource 
     params.permit(myengine_myresource: [:my, :list, :of, :accepted, :params]) 
     end 
    end 
    end 
end 
+0

這實際上是InheritedResources問題,並在[討論](https://github.com/activeadmin/activeadmin/issues/3161)描述的另一種解決方法,以及[這個拉請求](https://github.com/josevalim/inherited_resources/pull/404)應該完全解決這個問題 – railscard