Gar*_*ver 42 ruby-on-rails activeadmin ruby-on-rails-3.2 strong-parameters
更新:在ActiveAdmin中已经有一个解决方案之前询问了这个问题.正如Joseph所述,ActiveAdmin文档现在包含此信息,但此处的答案是为使用旧版ActiveAdmin的人提供的.
当strong_parameters 0.1.4与Rails 3.2.8中的ActiveAdmin 0.5.0一起使用时,如果您使用的模型使用StrongParameters,则包括:
include ::ActiveModel::ForbiddenAttributesProtection
Run Code Online (Sandbox Code Playgroud)
如果您尝试创建/编辑记录,则会在日志中收到以下错误:
ActiveModel::ForbiddenAttributes (ActiveModel::ForbiddenAttributes)
Run Code Online (Sandbox Code Playgroud)
Bre*_*uir 59
更新到最新的inherited_resources gem并在控制器块中执行此操作:
ActiveAdmin.register Blog do
#...
controller do
#...
def permitted_params
params.permit(:blog => [:name, :description])
# params.permit! # allow all parameters
end
end
end
Run Code Online (Sandbox Code Playgroud)
Nic*_*ban 19
接受的答案对于我在引擎中定义的资源不起作用,所以我在inherited_resources/lib/inherited_resources/base_helpers.rb中找到了原始的resource_params,并提出了这个更接近模仿该代码的解决方案,它适用于引擎:
在config/initializers/active_admin.rb
:
ActiveAdmin::ResourceController.class_eval do
# Allow ActiveAdmin admins to freely mass-assign when using strong_parameters
def resource_params
[(params[resource_request_name] || params[resource_instance_name]).try(:permit!) || {}]
end
end
Run Code Online (Sandbox Code Playgroud)
Man*_*era 19
在config/initializers/active_admin.rb中
config.before_filter do
params.permit!
end
Run Code Online (Sandbox Code Playgroud)
更新:请参阅@ Brendon-Muir的答案,了解最新的方法.以下信息以前是正确的,所以我会留在这里,以防其他人使用旧版本的ActiveAdmin.
谷歌小组讨论中提出了一个补丁:https://groups.google.com/forum/?fromgroups =#!topic / activeadmin / XD3W9QNbB8I
然后被放在这里:https: //github.com/gregbell/active_admin/issues/1731
但是现在,在应用程序中为ActiveAdmin添加强参数支持的最小侵入方法是通过"permit all params"方法重新定义控制器块中的resource_params,这种方法不太安全:
controller do
def resource_params
return [] if request.get?
[ params[active_admin_config.resource_class.name.underscore.to_sym].permit! ]
end
end
Run Code Online (Sandbox Code Playgroud)
或更安全的显式方式:
controller do
def resource_params
return [] if request.get?
[ params.require(:name_of_model).permit(:each,:param,:goes,:here,:if,:you,:want) ]
end
end
Run Code Online (Sandbox Code Playgroud)
请参阅有关修改控制器的Active Admin文档:http:
//activeadmin.info/docs/8-custom-actions.html#modify_the_controller
归档时间: |
|
查看次数: |
29363 次 |
最近记录: |