Rails强参数ActiveModel::ForbiddenAttributesError

Rails Strong parameters ActiveModel::ForbiddenAttributesError

嗨,我知道 Rails 4 正在使用强参数,我需要在控制器中允许它们,这就是我所做的,但我仍然收到此错误。

我的请求看起来像

{"utf8"=>"✓",
"authenticity_token"=>"cAJLJGiywr4TeAEpidQ1/XstiSNO+819W4QBhgMGNczVret+H/XDDVk3l1UpoaK8tHVK6qf+KK8VjBdM51zocA==",
"estate"=>{"building_id"=>"1",
"planet_id"=>"1",
"number"=>"2"},
"commit"=>"Build",
"locale"=>"en"}

在我的控制器中我尝试了

def estate_params
    params.require(:estate).permit(:building_id, :planet_id, :number)
end


@estate = Estate.new(estate_params)

Estate.new(params[:estate].permit(:building_id, :planet_id, :number))

任何人都可以向我解释为什么会出现此错误吗?

谢谢

完整跟踪

.bundle/gems/activemodel-4.2.0/lib/active_model/forbidden_attributes_protection.rb:21:in     `sanitize_for_mass_assignment'
.bundle/gems/activerecord-4.2.0/lib/active_record/attribute_assignment.rb:33:in `assign_attributes'
.bundle/gems/activerecord-4.2.0/lib/active_record/core.rb:557:in `init_attributes'
.bundle/gems/activerecord-4.2.0/lib/active_record/core.rb:280:in `initialize'
.bundle/gems/activerecord-4.2.0/lib/active_record/inheritance.rb:61:in `new'
.bundle/gems/activerecord-4.2.0/lib/active_record/inheritance.rb:61:in `new'
.bundle/gems/cancan-1.6.10/lib/cancan/controller_resource.rb:85:in `build_resource'
.bundle/gems/cancan-1.6.10/lib/cancan/controller_resource.rb:66:in `load_resource_instance'
.bundle/gems/cancan-1.6.10/lib/cancan/controller_resource.rb:32:in `load_resource'
.bundle/gems/cancan-1.6.10/lib/cancan/controller_resource.rb:25:in `load_and_authorize_resource'
.bundle/gems/cancan-1.6.10/lib/cancan/controller_resource.rb:10:in `block in add_before_filter'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:443:in `instance_exec'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:443:in `block in make_lambda'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:163:in `call'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:163:in `block in halting'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:169:in `call'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:169:in `block in halting'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:151:in `call'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:234:in `call'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:234:in `block in halting'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:234:in `call'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:234:in `block in halting'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:169:in `call'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:169:in `block in halting'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:169:in `call'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:169:in `block in halting'
.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:169:in `call'

.bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:169:in block in halting' .bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:92:incall' .bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:92:in _run_callbacks' .bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:734:in_run_process_action_callbacks' .bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:81:in run_callbacks' .bundle/gems/actionpack-4.2.0/lib/abstract_controller/callbacks.rb:19:inprocess_action' .bundle/gems/actionpack-4.2.0/lib/action_controller/metal/rescue.rb:29:在process_action' .bundle/gems/actionpack-4.2.0/lib/action_controller/metal/instrumentation.rb:31:in块中process_action' .bundle/gems/activesupport-4.2.0/lib/active_support/notifications.rb:164:in block in instrument' .bundle/gems/activesupport-4.2.0/lib/active_support/notifications/instrumenter.rb:20:in仪器' .bundle/gems/activesupport-4.2.0/lib/active_support/notifications.rb:164:in instrument' .bundle/gems/actionpack-4.2.0/lib/action_controller/metal/instrumentation.rb:30:inprocess_action' .bundle/gems/actionpack-4.2.0/lib/action_controller/metal/params_wrapper.rb:250:in process_action' .bundle/gems/activerecord-4.2.0/lib/active_record/railties/controller_runtime.rb:18:inprocess_action' .bundle/gems/actionpack-4.2.0/lib/abstract_controller/base.rb:137:in process' .bundle/gems/actionview-4.2.0/lib/action_view/rendering.rb:30:inprocess' .bundle/gems/actionpack-4.2.0/lib/action_controller/metal.rb:195:in dispatch' .bundle/gems/actionpack-4.2.0/lib/action_controller/metal/rack_delegation.rb:13:indispatch' .bundle/gems/actionpack-4.2.0/lib/action_controller/metal.rb:236:in block in action' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/routing/route_set.rb:73:incall' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/routing/route_set.rb:73:in dispatch' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/routing/route_set.rb:42:inserve' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/journey/router.rb:43:in block in serve' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/journey/router.rb:30:in每个' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/journey/router.rb:30:in serve' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/routing/route_set.rb:802:incall' .bundle/gems/rack-pjax-0.8.0/lib/rack/pjax.rb:12:in call' .bundle/gems/warden-1.2.3/lib/warden/manager.rb:35:in调用中阻塞' .bundle/gems/warden-1.2.3/lib/warden/manager.rb:34:in catch' .bundle/gems/warden-1.2.3/lib/warden/manager.rb:34:incall' .bundle/gems/rack-1.6.4/lib/rack/etag.rb:24:in call' .bundle/gems/rack-1.6.4/lib/rack/conditionalget.rb:38:incall' .bundle/gems/rack-1.6.4/lib/rack/head.rb:13:in call' .bundle/gems/remotipart-1.2.1/lib/remotipart/middleware.rb:27:incall' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/middleware/params_parser.rb:27:in call' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/middleware/flash.rb:260:incall' .bundle/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:225:in context' .bundle/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:220:incall' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/middleware/cookies.rb:560:in call' .bundle/gems/activerecord-4.2.0/lib/active_record/query_cache.rb:36:incall' .bundle/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:647:in call' .bundle/gems/activerecord-4.2.0/lib/active_record/migration.rb:378:incall' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/middleware/callbacks.rb:29:in block in call' .bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:88:incall' .bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:88:in _run_callbacks' .bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:734:in_run_call_callbacks' .bundle/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:81:in run_callbacks' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/middleware/callbacks.rb:27:incall' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/middleware/reloader.rb:73:in call' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/middleware/remote_ip.rb:78:incall' .bundle/gems/better_errors-2.1.1/lib/better_errors/middleware.rb:59:in call' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/middleware/debug_exceptions.rb:17:incall' .bundle/gems/web-console-2.2.1/lib/web_console/middleware.rb:31:in call' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/middleware/show_exceptions.rb:30:incall' .bundle/gems/railties-4.2.0/lib/rails/rack/logger.rb:38:in call_app' .bundle/gems/railties-4.2.0/lib/rails/rack/logger.rb:20:in调用中阻塞' .bundle/gems/activesupport-4.2.0/lib/active_support/tagged_logging.rb:68:在block in tagged' .bundle/gems/activesupport-4.2.0/lib/active_support/tagged_logging.rb:26:in标记' .bundle/gems/activesupport-4.2.0/lib/active_support/tagged_logging.rb:68:in tagged' .bundle/gems/railties-4.2.0/lib/rails/rack/logger.rb:20:incall' .bundle/gems/quiet_assets-1.1.0/lib/quiet_assets.rb:27:in call_with_quiet_assets' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/middleware/request_id.rb:21:incall' .bundle/gems/rack-1.6.4/lib/rack/methodoverride.rb:22:in call' .bundle/gems/rack-1.6.4/lib/rack/runtime.rb:18:incall' .bundle/gems/activesupport-4.2.0/lib/active_support/cache/strategy/local_cache_middleware.rb:28:in call' .bundle/gems/actionpack-4.2.0/lib/action_dispatch/middleware/static.rb:113:incall' .bundle/gems/rack-1.6.4/lib/rack/sendfile.rb:113:in call' .bundle/gems/railties-4.2.0/lib/rails/engine.rb:518:incall' .bundle/gems/railties-4.2.0/lib/rails/application.rb:164:in call' .bundle/gems/rack-1.6.4/lib/rack/content_length.rb:15:incall' .bundle/gems/thin-1.6.3/lib/thin/connection.rb:86:in block in pre_process' .bundle/gems/thin-1.6.3/lib/thin/connection.rb:84:incatch' .bundle/gems/thin-1.6.3/lib/thin/connection.rb:84:in pre_process' .bundle/gems/thin-1.6.3/lib/thin/connection.rb:53:inprocess' .bundle/gems/faye-websocket-0.10.0/lib/faye/adapters/thin.rb:40:in process' .bundle/gems/thin-1.6.3/lib/thin/connection.rb:39:inreceive_data' .bundle/gems/faye-websocket-0.10.0/lib/faye/adapters/thin.rb:44:in receive_data' .bundle/gems/eventmachine-1.0.8/lib/eventmachine.rb:193:inrun_machine' .bundle/gems/eventmachine-1.0.8/lib/eventmachine.rb:193:in run' .bundle/gems/thin-1.6.3/lib/thin/backends/base.rb:73:instart' .bundle/gems/thin-1.6.3/lib/thin/server.rb:162:in start' .bundle/gems/rack-1.6.4/lib/rack/handler/thin.rb:19:in运行' .bundle/gems/rack-1.6.4/lib/rack/server.rb:286:in start' .bundle/gems/railties-4.2.0/lib/rails/commands/server.rb:80:instart' .bundle/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:80:in block in server' .bundle/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:75:intap' .bundle/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:75:in server' .bundle/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:inrun_command!' .bundle/gems/railties-4.2.0/lib/rails/commands.rb:17:in <top (required)>' bin/rails:8:inrequire' bin/rails:8:在<top (required)>' .bundle/gems/spring-1.3.6/lib/spring/client/rails.rb:28:in加载' .bundle/gems/spring-1.3.6/lib/spring/client/rails.rb:28:in call' .bundle/gems/spring-1.3.6/lib/spring/client/command.rb:7:incall' .bundle/gems/spring-1.3.6/lib/spring/client.rb:26:in run' .bundle/gems/spring-1.3.6/bin/spring:48:in' .bundle/gems/spring-1.3.6/lib/spring/binstub.rb:11:in load' .bundle/gems/spring-1.3.6/lib/spring/binstub.rb:11:in' bin/spring:13:在require' bin/spring:13:in' bin/rails:3:在load' bin/rails:3:in'

您需要将它添加到控制器的顶部(假设这是一个 POST 来创建一个新的 Estate

load_and_authorize_resource :except => [:create]