troubles creating a new object of existing model through association object
我正在尝试通过关联创建一个新对象,如下所示:
1 2 3 4 5 6 7 8 9 | def create @enhancement = current_user.enhancements.create enhancement_params if @enhancement.save! redirect_to enhancements_path, notice:"Mission Control has receieved your request" else redirect_to enhancements_path, notice:"Danger! Mission Control could not receive your request!" end end |
我得到的错误是:
1 | wrong number of arguments (1 for 0) |
我也试过了
1 | @enhancement = current_user.enhancements.new enhancement_params |
然后为了您可能的参考,这里是我传递的强大参数
1 2 3 | def enhancement_params params.require(:enhancement).permit(:name, :description, :user_id, :status) end |
关联方面,模型增强属于用户模型,用户模型具有多种增强功能。
我不知道我做错了什么,偷偷摸摸的怀疑我错过了一些非常简单的东西,但我浪费了足够的时间在这上面。 有什么想法发生了什么? 我能给你什么其他信息吗?
更新 -
我只是在做
1 2 3 4 5 6 7 8 | def create @enhancement = Enhancement.create enhancement_params if @enhancement.save redirect_to enhancements_path, notice:"Mission Control has receieved your request" else redirect_to enhancements_path, notice:"Danger! Mission Control could not receive your request!" end end |
这是错误:
错误的参数个数(1表示0)
Started POST"/enhancements" for 127.0.0.1 at 2014-03-20 16:29:38
-0500 Processing by EnhancementsController#create as HTML Parameters: {"utf8"=>"?",
"authenticity_token"=>"pKfKnNGB4CWNSBOOKAe/l6Em+MSV5l+tLS0kDRTCQEc=",
"enhancement"=>{"name"=>"Wow what enhancemnt","description"=>"such
enhamcnetvery wow"},"commit"=>"Save Enhancement"} Completed
500 Internal Server Error in 3msArgumentError - wrong number of arguments (1 for 0):
activerecord-deprecated_finders (1.0.3)
lib/active_record/deprecated_finders/base.rb:28:incall' block
activerecord (4.0.2) lib/active_record/scoping/named.rb:163:in
(2 levels) in scope' activerecord (4.0.2)
lib/active_record/relation.rb:270:inscoping' activerecord (4.0.2) block in scope'
lib/active_record/scoping/named.rb:163:in
activerecord (4.0.2) lib/active_record/persistence.rb:36:increate' create' actionpack
app/controllers/enhancements_controller.rb:12:in
(4.0.2) lib/action_controller/metal/implicit_render.rb:4:in
send_action' actionpack (4.0.2) process_action' actionpack
lib/abstract_controller/base.rb:189:in
(4.0.2) lib/action_controller/metal/rendering.rb:10:in
process_action' actionpack (4.0.2) block in process_action'
lib/abstract_controller/callbacks.rb:18:in
activesupport (4.0.2) lib/active_support/callbacks.rb:403:in
_run__3594477325221698156__process_action__callbacks' activesupport run_callbacks'
(4.0.2) lib/active_support/callbacks.rb:80:in
actionpack (4.0.2) lib/abstract_controller/callbacks.rb:17:in
process_action' actionpack (4.0.2) process_action'
lib/action_controller/metal/rescue.rb:29:in
actionpack (4.0.2)
lib/action_controller/metal/instrumentation.rb:31:inblock in block in instrument'
process_action' activesupport (4.0.2)
lib/active_support/notifications.rb:159:in
activesupport (4.0.2)
lib/active_support/notifications/instrumenter.rb:20:ininstrument' instrument' actionpack (4.0.2)
activesupport (4.0.2) lib/active_support/notifications.rb:159:in
lib/action_controller/metal/instrumentation.rb:30:inprocess_action' process_action'
actionpack (4.0.2)
lib/action_controller/metal/params_wrapper.rb:245:in
activerecord (4.0.2)
lib/active_record/railties/controller_runtime.rb:18:in
process_action' actionpack (4.0.2) process' actionpack (4.0.2)
lib/abstract_controller/base.rb:136:in
lib/abstract_controller/rendering.rb:44:inprocess' actionpack dispatch' actionpack
(4.0.2) lib/action_controller/metal.rb:195:in
(4.0.2) lib/action_controller/metal/rack_delegation.rb:13:in
dispatch' actionpack (4.0.2) lib/action_controller/metal.rb:231:in block in action' actionpack (4.0.2)
lib/action_dispatch/routing/route_set.rb:80:indispatch' actionpack call'
(4.0.2) lib/action_dispatch/routing/route_set.rb:48:in
actionpack (4.0.2) lib/action_dispatch/journey/router.rb:71:inblock call' actionpack
in call' actionpack (4.0.2)
lib/action_dispatch/journey/router.rb:59:in
(4.0.2) lib/action_dispatch/routing/route_set.rb:680:incall' block in call' warden
warden (1.2.3) lib/warden/manager.rb:35:in
(1.2.3) lib/warden/manager.rb:34:incall' rack (1.5.2) call' rack (1.5.2)
lib/rack/etag.rb:23:in
lib/rack/conditionalget.rb:35:incall' rack (1.5.2) call' actionpack (4.0.2)
lib/rack/head.rb:11:in
lib/action_dispatch/middleware/params_parser.rb:27:incall' call' rack (1.5.2) lib/rack/session/abstract/id.rb:225:in
actionpack (4.0.2) lib/action_dispatch/middleware/flash.rb:241:in
context' call'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in
actionpack (4.0.2) lib/action_dispatch/middleware/cookies.rb:486:in
call' activerecord (4.0.2) lib/active_record/query_cache.rb:36:in call' activerecord (4.0.2)
lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in
call' activerecord (4.0.2) lib/active_record/migration.rb:369:in call' actionpack (4.0.2)
lib/action_dispatch/middleware/callbacks.rb:29:inblock in call' _run__4163598129264950275__call__callbacks' activesupport (4.0.2)
activesupport (4.0.2) lib/active_support/callbacks.rb:373:in
lib/active_support/callbacks.rb:80:inrun_callbacks' actionpack call'
(4.0.2) lib/action_dispatch/middleware/callbacks.rb:27:in
actionpack (4.0.2) lib/action_dispatch/middleware/reloader.rb:64:in
call' actionpack (4.0.2) call'
lib/action_dispatch/middleware/remote_ip.rb:76:in
better_errors (1.1.0) lib/better_errors/middleware.rb:84:in
protected_app_call' better_errors (1.1.0) better_errors_call'
lib/better_errors/middleware.rb:79:in
better_errors (1.1.0) lib/better_errors/middleware.rb:56:incall' call'
actionpack (4.0.2)
lib/action_dispatch/middleware/debug_exceptions.rb:17:in
actionpack (4.0.2)
lib/action_dispatch/middleware/show_exceptions.rb:30:incall' call_app' railties
railties (4.0.2) lib/rails/rack/logger.rb:38:in
(4.0.2) lib/rails/rack/logger.rb:20:inblock in call' activesupport block in tagged'
(4.0.2) lib/active_support/tagged_logging.rb:67:in
activesupport (4.0.2) lib/active_support/tagged_logging.rb:25:in
tagged' activesupport (4.0.2) tagged' railties (4.0.2)
lib/active_support/tagged_logging.rb:67:in
lib/rails/rack/logger.rb:20:incall' actionpack (4.0.2) call' rack
lib/action_dispatch/middleware/request_id.rb:21:in
(1.5.2) lib/rack/methodoverride.rb:21:incall' rack (1.5.2) call' activesupport (4.0.2)
lib/rack/runtime.rb:17:in
lib/active_support/cache/strategy/local_cache.rb:83:incall' rack call' actionpack (4.0.2)
(1.5.2) lib/rack/lock.rb:17:in
lib/action_dispatch/middleware/static.rb:64:incall' rack (1.5.2) call' railties (4.0.2)
lib/rack/sendfile.rb:112:in
lib/rails/engine.rb:511:incall' railties (4.0.2) call' rack (1.5.2)
lib/rails/application.rb:97:in
lib/rack/lock.rb:17:incall' rack (1.5.2) call' rack (1.5.2)
lib/rack/content_length.rb:14:in
lib/rack/handler/webrick.rb:60:inservice' service'
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/httpserver.rb:138:in
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/httpserver.rb:94:in
run' block in start_thread' `
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/server.rb:295:in
试试:
1 2 3 4 5 6 7 8 9 | def create @enhancement = current_user.enhancements.build enhancement_params if @enhancement.save # without bang method, it throws an exception redirect_to enhancements_path, notice:"Mission Control has receieved your request" else redirect_to enhancements_path, notice:"Danger! Mission Control could not receive your request!" end end |
我无法想象哪个方法会在该操作中抛出错误,因此您应该检查是否有任何