Rails Engine with ActiveAdmin 中的资源命名空间问题
Resource namespace Issue in Rails Engine with ActiveAdmin
我在 ActiveAdmin 中成功注册资源时遇到问题,但无法创建或更新任何记录。我认为这是由于命名空间问题。我可以在注册资源时使用选项覆盖它吗?
我正在构建一个 Rails 引擎,它从引擎内部注册 AA 资源。我按照说明 here.
我的引擎包含 lib/admin/myengine/myresources.rb
if defined?(ActiveAdmin)
ActiveAdmin.register Myengine::Myresource do
end
end
在 test/dummy 应用程序中,相关架构如下所示:
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 并单击 'New Myengine Myresource'
我输入名称并单击 'Create Myresource',但它会将该请求视为我提交了空白属性值。
服务器日志显示:
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)
我的工作理论是参数需要在 :myengine_myresource 而不仅仅是 :myresource.
关于如何让它发挥作用有什么想法吗?
这是一种解决方法:
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
我在 ActiveAdmin 中成功注册资源时遇到问题,但无法创建或更新任何记录。我认为这是由于命名空间问题。我可以在注册资源时使用选项覆盖它吗?
我正在构建一个 Rails 引擎,它从引擎内部注册 AA 资源。我按照说明 here.
我的引擎包含 lib/admin/myengine/myresources.rb
if defined?(ActiveAdmin)
ActiveAdmin.register Myengine::Myresource do
end
end
在 test/dummy 应用程序中,相关架构如下所示:
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 并单击 'New Myengine Myresource'
我输入名称并单击 'Create Myresource',但它会将该请求视为我提交了空白属性值。
服务器日志显示:
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)
我的工作理论是参数需要在 :myengine_myresource 而不仅仅是 :myresource.
关于如何让它发挥作用有什么想法吗?
这是一种解决方法:
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