【发布时间】:2014-04-27 21:19:10
【问题描述】:
我正在尝试通过关联创建一个新对象:
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
我得到的错误是:
wrong number of arguments (1 for 0)
我也试过
@enhancement = current_user.enhancements.new enhancement_params
然后供您参考,这里是我传入的强参数
def enhancement_params
params.require(:enhancement).permit(:name, :description, :user_id, :status)
end
在关联方面,模型增强属于_用户模型,而用户模型有_许多增强。
我不知道我做错了什么并且偷偷怀疑我错过了一些超级简单的东西,但我已经浪费了足够的时间。有什么想法吗?有什么其他信息可以告诉你吗?
更新 -
我只是在做
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)
在 2014-03-20 16:29:38 为 127.0.0.1 开始 POST "/enhancements" -0500 由 EnhancementsController#create 作为 HTML 参数处理:{"utf8"=>"✓", "authenticity_token"=>"pKfKnNGB4CWNSBOOKAe/l6Em+MSV5l+tLS0kDRTCQEc=", "enhancement"=>{"name"=>"哇什么enhancement", "description"=>"这样 enhamcnet \r\n\r\nvery wow"}, "commit"=>"Save Enhancement"} 完成 3ms 内出现 500 内部服务器错误
ArgumentError - 参数数量错误(1 对应 0):
activerecord-deprecated_finders (1.0.3) lib/active_record/deprecated_finders/base.rb:28:incall'block (2 级)范围的活动记录(4.0.2) lib/active_record/relation.rb:270:in
activerecord (4.0.2) lib/active_record/scoping/named.rb:163:inscoping' activerecord (4.0.2) lib/active_record/scoping/named.rb:163:inblock in scope'
activerecord (4.0.2) lib/active_record/persistence.rb:36:increate'create' actionpack (4.0.2) lib/action_controller/metal/implicit_render.rb:4:in
app/controllers/enhancements_controller.rb:12:insend_action' actionpack (4.0.2) lib/abstract_controller/base.rb:189:inprocess_action' 动作包 (4.0.2) lib/action_controller/metal/rendering.rb:10:inprocess_action' actionpack (4.0.2) lib/abstract_controller/callbacks.rb:18:inblock in process_action'
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:inrun_callbacks'
actionpack (4.0.2) lib/abstract_controller/callbacks.rb:17:inprocess_action' actionpack (4.0.2) lib/action_controller/metal/rescue.rb:29:inprocess_action'
动作包 (4.0.2) lib/action_controller/metal/instrumentation.rb:31:inblock in process_action' activesupport (4.0.2) lib/active_support/notifications.rb:159:inblock in instrument'
主动支持 (4.0.2) lib/active_support/notifications/instrumenter.rb:20:ininstrument'instrument' actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:30:in
activesupport (4.0.2) lib/active_support/notifications.rb:159:inprocess_action' actionpack (4.0.2) lib/action_controller/metal/params_wrapper.rb:245:inprocess_action' 活动记录(4.0.2) lib/active_record/railties/controller_runtime.rb:18:inprocess_action' actionpack (4.0.2) lib/abstract_controller/base.rb:136:inprocess' 动作包 (4.0.2) lib/abstract_controller/rendering.rb:44:inprocess' actionpack (4.0.2) lib/action_controller/metal.rb:195:indispatch' actionpack (4.0.2) lib/action_controller/metal/rack_delegation.rb:13:indispatch' actionpack (4.0.2) lib/action_controller/metal.rb:231:inblock in action' actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:80:indispatch' actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:48:incall'
actionpack (4.0.2) lib/action_dispatch/journey/router.rb:71:inblock in call' actionpack (4.0.2) lib/action_dispatch/journey/router.rb:59:incall' actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:680:incall'block in call'warden (1.2.3) lib/warden/manager.rb:34:in
warden (1.2.3) lib/warden/manager.rb:35:incall' rack (1.5.2) lib/rack/etag.rb:23:incall' 机架 (1.5.2) lib/rack/conditionalget.rb:35:incall' rack (1.5.2) lib/rack/head.rb:11:incall' actionpack (4.0.2) lib/action_dispatch/middleware/params_parser.rb:27:incall'call' 机架 (1.5.2) lib/rack/session/abstract/id.rb:225:in
actionpack (4.0.2) lib/action_dispatch/middleware/flash.rb:241:incontext' rack (1.5.2) lib/rack/session/abstract/id.rb:220:incall'
actionpack (4.0.2) lib/action_dispatch/middleware/cookies.rb:486:incall' activerecord (4.0.2) lib/active_record/query_cache.rb:36:incall'活动记录(4.0.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:incall' activerecord (4.0.2) lib/active_record/migration.rb:369:incall' 动作包 (4.0.2) lib/action_dispatch/middleware/callbacks.rb:29:inblock in call'_run__4163598129264950275__call__callbacks' activesupport (4.0.2) lib/active_support/callbacks.rb:80:in
activesupport (4.0.2) lib/active_support/callbacks.rb:373:inrun_callbacks' actionpack (4.0.2) lib/action_dispatch/middleware/callbacks.rb:27:incall'
actionpack (4.0.2) lib/action_dispatch/middleware/reloader.rb:64:incall' actionpack (4.0.2) lib/action_dispatch/middleware/remote_ip.rb:76:incall'
better_errors (1.1.0) lib/better_errors/middleware.rb:84:inprotected_app_call' better_errors (1.1.0) lib/better_errors/middleware.rb:79:inbetter_errors_call'
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
动作包 (4.0.2) lib/action_dispatch/middleware/show_exceptions.rb:30:incall'call_app' railties (4.0.2) lib/rails/rack/logger.rb:20:in
railties (4.0.2) lib/rails/rack/logger.rb:38:inblock in call' activesupport (4.0.2) lib/active_support/tagged_logging.rb:67:inblock in tagged'
activesupport (4.0.2) lib/active_support/tagged_logging.rb:25:intagged' activesupport (4.0.2) lib/active_support/tagged_logging.rb:67:intagged' railties (4.0.2) lib/rails/rack/logger.rb:20:incall' actionpack (4.0.2) lib/action_dispatch/middleware/request_id.rb:21:incall' 机架 (1.5.2) lib/rack/methodoverride.rb:21:incall' rack (1.5.2) lib/rack/runtime.rb:17:incall' activesupport (4.0.2) lib/active_support/cache/strategy/local_cache.rb:83:incall' rack (1.5.2) lib/rack/lock.rb:17:incall' actionpack (4.0.2) lib/action_dispatch/middleware/static.rb:64:incall' rack (1.5.2) lib/rack/sendfile.rb:112:incall' railties (4.0.2) lib/rails/engine.rb:511:incall' railties (4.0.2) lib/rails/application.rb:97:incall' 机架 (1.5.2) lib/rack/lock.rb:17:incall' rack (1.5.2) lib/rack/content_length.rb:14:incall' 机架 (1.5.2) 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:inrun'block in start_thread' `
/Users/chris/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/webrick/server.rb:295:in
【问题讨论】:
-
不确定是否是因为您一直在编辑大量内容以找到解决方案,但是:
create(看起来是正确的调用)将在验证通过时创建并保存一个新对象。然后save!将保存它或在验证失败时引发异常。你可能想打电话给build然后@enhancement.save来检查它是否保存好。可能值得先解决这个问题。 -
你能分享错误堆栈跟踪吗?你到底在哪里得到错误?
-
更新了更多信息!
-
嘿,很抱歉撤销它,但它不是设计的。用更多信息更新了主帖
标签: ruby-on-rails activerecord ruby-on-rails-4