简体   繁体   English

麻烦通过关联对象创建现有模型的新对象

[英]troubles creating a new object of existing model through association object

I'm trying to create a new object via an association as so: 我正试图通过关联来创建一个新对象:

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

and the error I get is: 我得到的错误是:

wrong number of arguments (1 for 0)

I've also tried 我也尝试过

@enhancement = current_user.enhancements.new enhancement_params

and then for your possible reference, here are the strong parameters I'm passing in 然后供您参考,以下是我传入的强大参数

def enhancement_params
  params.require(:enhancement).permit(:name, :description, :user_id, :status)
end

Association-wise, the model enhancements belongs_to the user model, and the user model has_many enhancements. 在关联方面,模型增强属于用户模型,而用户模型具有许多增强。

I have no idea what I'm doing wrong and a sneaking suspicion I'm missing something super simple, but I've wasted enough time on this. 我不知道我在做什么错,也有一个偷偷摸摸的嫌疑,我错过了一些超级简单的东西,但是我在此上浪费了足够的时间。 Any ideas what's going on? 有什么想法吗? Is there any other information I can give you? 我还能提供其他信息吗?

Updated - 更新 -

I'm just doing 我只是在做

 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

here's the error : wrong number of arguments (1 for 0) 这是错误 :参数数量错误 (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 enhamcnet \\r\\n\\r\\nvery wow"}, "commit"=>"Save Enhancement"} Completed 500 Internal Server Error in 3ms 在2014-03-20 16:29:38 -0500通过EnhancementsController#create作为HTML参数开始处理127.0.0.1的POST“ /增强”:{“ utf8” =>“✓”,“ authenticity_token” =>“ pKfKnNGB4CWNSBOOKAe / l6Em + MSV5l + tLS0kDRTCQEc =“,” enhancement“ => {” name“ =>”哇什么增强“,” description“ =>”这样的enhancnet \\ r \\ n \\ r \\ nwow哇“},” commit“ => “保存增强”}在3毫秒内完成了500个内部服务器错误

ArgumentError - wrong number of arguments (1 for 0): ArgumentError-错误的参数数量(1代表0):
activerecord-deprecated_finders (1.0.3) lib/active_record/deprecated_finders/base.rb:28:in call'
activerecord (4.0.2) lib/active_record/scoping/named.rb:163:in
activerecord-deprecated_finders(1.0.3)lib / active_record / deprecated_finders / base.rb:28: call'
activerecord (4.0.2) lib/active_record/scoping/named.rb:163:in
call'
activerecord (4.0.2) lib/active_record/scoping/named.rb:163:in
call'
activerecord (4.0.2) lib/active_record/scoping/named.rb:163:in
block (2 levels) in scope' activerecord (4.0.2) lib/active_record/relation.rb:270:in scoping' activerecord (4.0.2) lib/active_record/scoping/named.rb:163:in block in scope'
call'
activerecord (4.0.2) lib/active_record/scoping/named.rb:163:in
作用域“ activerecord(4.0.2) call'
activerecord (4.0.2) lib/active_record/scoping/named.rb:163:in
块(2个级别)” lib / active_record / relation.rb:270: scoping' activerecord (4.0.2) lib/active_record/scoping/named.rb:163:in在范围内的块中

activerecord (4.0.2) lib/active_record/persistence.rb:36:in create'
app/controllers/enhancements_controller.rb:12:in
activerecord(4.0.2)lib / active_record / persistence.rb:36:in create'
app/controllers/enhancements_controller.rb:12:in
create'
app/controllers/enhancements_controller.rb:12:in
create'
app/controllers/enhancements_controller.rb:12:in
create' actionpack (4.0.2) lib/action_controller/metal/implicit_render.rb:4:in send_action' actionpack (4.0.2) lib/abstract_controller/base.rb:189:in process_action' actionpack (4.0.2) lib/action_controller/metal/rendering.rb:10:in process_action' actionpack (4.0.2) lib/abstract_controller/callbacks.rb:18:in block in process_action'
create'
app/controllers/enhancements_controller.rb:12:in
create'actionpack(4.0.2)lib / action_controller / metal / implicit_render.rb:4:in send_action' actionpack (4.0.2) lib/abstract_controller/base.rb:189:in process_action'操作包(4.0.2)中lib / action_controller / metal / rendering.rb:10:在process_action' actionpack (4.0.2) lib/abstract_controller/callbacks.rb:18:in在process_action process_action' actionpack (4.0.2) lib/abstract_controller/callbacks.rb:18:in阻止

activesupport (4.0.2) lib/active_support/callbacks.rb:403:in _run__3594477325221698156__process_action__callbacks' activesupport (4.0.2) lib/active_support/callbacks.rb:80:in run_callbacks' activesupport(4.0.2)lib / active_support / callbacks.rb:403:在_run__3594477325221698156__process_action__callbacks' activesupport (4.0.2) lib/active_support/callbacks.rb:80:in run_callbacks'
actionpack (4.0.2) lib/abstract_controller/callbacks.rb:17:in process_action' actionpack (4.0.2) lib/action_controller/metal/rescue.rb:29:in process_action' actionpack(4.0.2)lib / abstract_controller / callbacks.rb:17:在process_action' actionpack (4.0.2) lib/action_controller/metal/rescue.rb:29:in process_action'
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:31:in block in process_action' activesupport (4.0.2) lib/active_support/notifications.rb:159:in block in instrument' 动作包(4.0.2)lib / action_controller / metal / instrumentation.rb:31:在block in process_action' activesupport (4.0.2) lib/active_support/notifications.rb:159:in在instrument'action的'
activesupport (4.0.2) lib/active_support/notifications/instrumenter.rb:20:in instrument'
activesupport (4.0.2) lib/active_support/notifications.rb:159:in
activesupport(4.0.2)lib / active_support / notifications / instrumenter.rb:20:in instrument'
activesupport (4.0.2) lib/active_support/notifications.rb:159:in
instrument'
activesupport (4.0.2) lib/active_support/notifications.rb:159:in
instrument'
activesupport (4.0.2) lib/active_support/notifications.rb:159:in
instrument' actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:30:in process_action' actionpack (4.0.2) lib/action_controller/metal/params_wrapper.rb:245:in process_action' activerecord (4.0.2) lib/active_record/railties/controller_runtime.rb:18:in process_action' actionpack (4.0.2) lib/abstract_controller/base.rb:136:in process' actionpack (4.0.2) lib/abstract_controller/rendering.rb:44:in process' actionpack (4.0.2) lib/action_controller/metal.rb:195:in dispatch' actionpack (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:in dispatch' actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:48:in call'
instrument'
activesupport (4.0.2) lib/active_support/notifications.rb:159:in
工具的动作包(4.0.2)lib / action_controller / metal / instrumentation.rb:30:在process_action' actionpack (4.0.2) lib/action_controller/metal/params_wrapper.rb:245:in process_action'activerecord(4.0.2)中lib / active_record / railties / controller_runtime.rb:18:在process_action' actionpack (4.0.2) lib/abstract_controller/base.rb:136:in进程中'actionpack(4.0.2)lib / abstract_controller / rendering.rb:44: process' actionpack (4.0.2) lib/action_controller/metal.rb:195:in调度中的actionpack(4.0.2)lib / action_controller / metal /rack_delegation.rb:13:在dispatch' actionpack (4.0.2) lib/action_controller/metal.rb:231:in在动作的块动作包(4.0.2)lib / action_dispatch / routing / route_set.rb:80:in dispatch' actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:48:in call'

actionpack (4.0.2) lib/action_dispatch/journey/router.rb:71:in block in call' actionpack (4.0.2) lib/action_dispatch/journey/router.rb:59:in call' actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:680:in call'
warden (1.2.3) lib/warden/manager.rb:35:in
actionpack(4.0.2)lib / action_dispatch / journey / router.rb:71:在block 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:in call'
warden (1.2.3) lib/warden/manager.rb:35:in
call'
warden (1.2.3) lib/warden/manager.rb:35:in
call'
warden (1.2.3) lib/warden/manager.rb:35:in
block in call' warden (1.2.3) lib/warden/manager.rb:34:in call' rack (1.5.2) lib/rack/etag.rb:23:in call' rack (1.5.2) lib/rack/conditionalget.rb:35:in call' rack (1.5.2) lib/rack/head.rb:11:in call' actionpack (4.0.2) lib/action_dispatch/middleware/params_parser.rb:27:in call'
actionpack (4.0.2) lib/action_dispatch/middleware/flash.rb:241:in
call'
warden (1.2.3) lib/warden/manager.rb:35:in
通话call'
warden (1.2.3) lib/warden/manager.rb:35:in
阻止守望者(1.2.3)lib / warden / manager.rb:34:在call' rack (1.5.2) lib/rack/etag.rb:23:in通话中机架(1.5.2)lib / rack / conditionalget.rb:35: call' rack (1.5.2) lib/rack/head.rb:11:in通话中call' rack (1.5.2) lib/rack/head.rb:11:in (4.0 .2)lib / action_dispatch / middleware / params_parser.rb:27: call'
actionpack (4.0.2) lib/action_dispatch/middleware/flash.rb:241:in
call'
actionpack (4.0.2) lib/action_dispatch/middleware/flash.rb:241:in
call'
actionpack (4.0.2) lib/action_dispatch/middleware/flash.rb:241:in
call' rack (1.5.2) lib/rack/session/abstract/id.rb:225:in context' rack (1.5.2) lib/rack/session/abstract/id.rb:220:in call'
call'
actionpack (4.0.2) lib/action_dispatch/middleware/flash.rb:241:in
调用机架(1.5.2)lib / rack / session / abstract / id.rb:225:在context' rack (1.5.2) lib/rack/session/abstract/id.rb:220:in call'

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:in block in call'
activesupport (4.0.2) lib/active_support/callbacks.rb:373:in
actionpack(4.0.2)lib / action_dispatch / middleware / cookies.rb:486: call' activerecord (4.0.2) lib/active_record/query_cache.rb:36:in调用中的activerecord(4.0.2)lib / active_record / connection_adapters / abstract / connection_pool.rb:626: call' activerecord (4.0.2) lib/active_record/migration.rb:369:in调用中的actionpack(4.0.2)lib / action_dispatch / middleware / callbacks.rb:29: block in call'
activesupport (4.0.2) lib/active_support/callbacks.rb:373:in
block in call'
activesupport (4.0.2) lib/active_support/callbacks.rb:373:in
block in call'
activesupport (4.0.2) lib/active_support/callbacks.rb:373:in
_run__4163598129264950275__call__callbacks' activesupport (4.0.2) lib/active_support/callbacks.rb:80:in run_callbacks' actionpack (4.0.2) lib/action_dispatch/middleware/callbacks.rb:27:in call'
block in call'
activesupport (4.0.2) lib/active_support/callbacks.rb:373:in
_run__4163598129264950275__call__callbacks的activesupport(4.0.2)lib / active_support / callbacks.rb:80:在run_callbacks' actionpack (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) lib/action_dispatch/middleware/remote_ip.rb:76:in call' actionpack(4.0.2)lib / action_dispatch / middleware / reloader.rb:64: call' actionpack (4.0.2) 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) lib/better_errors/middleware.rb:79:in better_errors_call' 更好的错误(1.1.0)lib / better_errors / middleware.rb:84:在protected_app_call' better_errors (1.1.0) lib/better_errors/middleware.rb:79:in Better_errors_call中
better_errors (1.1.0) lib/better_errors/middleware.rb:56:in call'
actionpack (4.0.2) lib/action_dispatch/middleware/debug_exceptions.rb:17:in
better_errors(1.1.0)lib / better_errors / middleware.rb:56: call'
actionpack (4.0.2) lib/action_dispatch/middleware/debug_exceptions.rb:17:in
call'
actionpack (4.0.2) lib/action_dispatch/middleware/debug_exceptions.rb:17:in
call'
actionpack (4.0.2) lib/action_dispatch/middleware/debug_exceptions.rb:17:in
call'
call'
actionpack (4.0.2) lib/action_dispatch/middleware/debug_exceptions.rb:17:in
call'

actionpack (4.0.2) lib/action_dispatch/middleware/show_exceptions.rb:30:in call'
railties (4.0.2) lib/rails/rack/logger.rb:38:in
actionpack(4.0.2)lib / action_dispatch / middleware / show_exceptions.rb:30:in call'
railties (4.0.2) lib/rails/rack/logger.rb:38:in
call'
railties (4.0.2) lib/rails/rack/logger.rb:38:in
call'
railties (4.0.2) lib/rails/rack/logger.rb:38:in
call_app' railties (4.0.2) lib/rails/rack/logger.rb:20:in block in call' activesupport (4.0.2) lib/active_support/tagged_logging.rb:67:in block in tagged'
call'
railties (4.0.2) lib/rails/rack/logger.rb:38:in
call_app'中railties(4.0.2)lib / rails / rack / logger.rb:20:in block in call' activesupport (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) lib/active_support/tagged_logging.rb:67:in tagged' railties (4.0.2) lib/rails/rack/logger.rb:20:in call' actionpack (4.0.2) lib/action_dispatch/middleware/request_id.rb:21:in call' rack (1.5.2) lib/rack/methodoverride.rb:21:in call' rack (1.5.2) lib/rack/runtime.rb:17:in call' activesupport (4.0.2) lib/active_support/cache/strategy/local_cache.rb:83:in call' rack (1.5.2) lib/rack/lock.rb:17:in call' actionpack (4.0.2) lib/action_dispatch/middleware/static.rb:64:in call' rack (1.5.2) lib/rack/sendfile.rb:112:in call' railties (4.0.2) lib/rails/engine.rb:511:in call' railties (4.0.2) lib/rails/application.rb:97:in call' rack (1.5.2) lib/rack/lock.rb:17:in call' rack (1.5.2) lib/rack/content_length.rb:14:in call' rack (1.5.2) lib/rack/handler/webrick.rb:60:in service'
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/httpserver.rb:138:in
activesupport(4.0.2)lib / active_support / tagged_logging.rb:25:在tagged' activesupport (4.0.2) lib/active_support/tagged_logging.rb:67:in tag的栏杆(4.0.2)lib / rails / rack / logger.rb:20: call' actionpack (4.0.2) lib/action_dispatch/middleware/request_id.rb:21:in通话中机架(1.5.2)lib / rack / methodoverride.rb:21: call' rack (1.5.2) lib/rack/runtime.rb:17:in调用中的主动支持(4.0.2)lib / active_support / cache / strategy / local_cache.rb:83: call' rack (1.5.2) lib/rack/lock.rb:17:in (4.0.2)lib / action_dispatch / middleware / static.rb:64:in call'rack call' rack (1.5.2) lib/rack/sendfile.rb:112:in call'栏杆(4.0.2)lib / rails / engine.rb:511: call' railties (4.0.2) lib/rails/application.rb:97:in通话中的机架(1.5.2)lib / rack / lock。 rb:17: call' rack (1.5.2) lib/rack/content_length.rb:14:in通话中机架(1.5.2)lib / rack / handler / webrick.rb:60: service'
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/httpserver.rb:138:in
service'
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/httpserver.rb:138:in
service'
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/httpserver.rb:138:in
service'
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'
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/server.rb:295:in
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/httpserver.rb:94: run'
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/server.rb:295:in
run'
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/server.rb:295:in
run'
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/server.rb:295:in
block in start_thread' `
run'
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/server.rb:295:in
在start_thread块中

Try with: 尝试:

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

I can't imagine which method throws the error in that action, so you should check if any before_filter (or before_action in Rails 4 ) is causing the error. 我无法想象哪个方法会在该操作中引发错误,因此您应该检查是否有任何before_filter (或Rails 4 before_action )引起了该错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM