Rails jQuery POST - ArgumentError - 错误的参数个数(1表示0)?

 某一句爱的搁浅- 发布于 2023-01-07 20:22

我正在使用rails 4.1.

我已经设置了自定义控制器.我已经配置了以下路线:

resources :chats

我正在尝试使用jQuery向控制器发出post请求.这是代码:

$.post('/chats/', { session: { advisor_id: $(this).attr('data-id') } }, function (data) {
    eval(data);
});

编辑:这是我的控制器的代码 -

class ChatsController < ApplicationController

  def create
    #create the new session
    @session = Session.create(:advisor_id => session_params[:advisor_id], :session_type => @session.call!, :client_id => current_user.id)

  end

  private
    def session_params
     params[:session].permit(:advisor_id, :client_id, :session_type)
    end
end

编辑:这是我的模型的代码 -

class Session < ActiveRecord::Base
  enum session_type: [ :chat, :call ]
  belongs_to :client, :class_name => "User", :foreign_key => :client_id
  belongs_to :advisor, :class_name => "User", :foreign_key => :advisor_id
  has_many :instant_messages

  def self.obj_name(id)
    o = Session.find(id)
    "#{o.client.full_name} and #{o.advisor.full_name}"
  end
end

但是它会抛出一个错误:

ArgumentError - 参数数量错误(1表示0):activesupport(4.1.1)lib/active_support/callbacks.rb:80:in run_callbacks' actionpack (4.1.1) lib/abstract_controller/callbacks.rb:19:inprocess_action'actionpack(4.1.1)lib/action_controller/metal/rescue.rb:29:in process_action' actionpack (4.1.1) lib/action_controller/metal/instrumentation.rb:31:inblock in process'action'activesupport(4.1.1)lib/active_support/notifications.rb:159:在block in instrument' activesupport (4.1.1) lib/active_support/notifications/instrumenter.rb:20:ininstrument'activesupport(4.1.1)lib/active_support/notifications.rb:159:in instrument' actionpack (4.1.1) lib/action_controller/metal/instrumentation.rb:30:inprocess_action'actionpack(4.1.1)lib/action_controller/metal/params_wrapper.rb:250:在process_action' activerecord (4.1.1) lib/active_record/railties/controller_runtime.rb:18:inprocess_action'actionpack(4.1.1)中lib/abstract_controller/base.rb:136:在process' actionview (4.1.1) lib/action_view/rendering.rb:30:in进程'actionpack(4.1.1)lib/action_controller/metal.rb:195:in dispatch' actionpack (4.1.1) lib/action_controller/metal/rack_delegation.rb:13:indispatch 'actionpack(4.1.1)lib/action_controller/metal.rb:231:in block in action' actionpack (4.1.1) lib/action_dispatch/routing/route_set.rb:80:indispatch'actionpack(4.1.1)lib/action_dispatch/routing/route_set.rb:48:in call' actionpack (4.1.1) lib/action_dispatch/journey/router.rb:71:inblock in call'actionpack (4.1.1)lib /action_dispatch/journey/router.rb:59:in call' actionpack (4.1.1) lib/action_dispatch/routing/route_set.rb:676:in调用'rack-pjax(0.7.0)lib/rack/pjax.rb:12:in call' warden (1.2.3) lib/warden/manager.rb:35:inblock in call'warden (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呼叫'remotipart(1.2.1)lib/remoti part/middleware.rb:27:在call' actionpack (4.1.1) lib/action_dispatch/middleware/params_parser.rb:27:in调用'actionpack(4.1.1)lib/action_dispatch/middleware/flash.rb:254:在call' rack (1.5.2) lib/rack/session/abstract/id.rb:225:in上下文'rack(1.5.2)lib/rack/session/abstract/id.rb: 220:在call' actionpack (4.1.1) lib/action_dispatch/middleware/cookies.rb:560:in调用'activerecord(4.1.1)lib/active_record/query_cache.rb:36:在call' activerecord (4.1.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in调用'activerecord(4.1.1)lib/active_record/migration.rb:380:在call' actionpack (4.1.1) lib/action_dispatch/middleware/callbacks.rb:29:in块中调用'activesupport(4.1.1) )lib/active_support/callbacks.rb:82:在run_callbacks' actionpack (4.1.1) lib/action_dispatch/middleware/callbacks.rb:27:in调用'actionpack(4.1.1)lib/action_dispatch/middleware/reloader.rb:73:在call' actionpack (4.1.1) lib/action_dispatch/middleware/remote_ip.rb:76:in调用'better_errors(1.1.0)lib/better_errors/middleware.rb:84 :在protected_app_call' better_errors (1.1.0) lib/better_errors/middleware.rb:79:inbetter_errors_call'great_errors(1.1.0)lib/better_errors/middleware.rb:56:在call' actionpack (4.1.1) lib/action_dispatch/middleware/debug_exceptions.rb:17:in调用'actionpack(4.1.1)lib/action_dispatch/middleware/show_exceptions.rb:30:在call' railties (4.1.1) lib/rails/rack/logger.rb:38:incall_app'ravties(4.1.1)中lib/rails/rack/logger.rb:20:在block in call' activesupport (4.1.1) lib/active_support/tagged_logging.rb:68:in标记为'activesupport(4.1.1)lib/active_support/tagged_logging.rb的块中:26:在tagged' activesupport (4.1.1) lib/active_support/tagged_logging.rb:68:in标记为'railties(4.1.1)lib/rails/rack/logger中. rb:20:在call' quiet_assets (1.0.2) lib/quiet_assets.rb:18:incall_with_quiet_assets'actionpack(4.1.1)lib/action_dispatch/middleware/request_id.rb:21:在call' rack (1.5.2) lib/rack/methodoverride.rb:21:in调用'rack(1.5.2)lib/rack/runtime.rb:17:in call' activesupport (4.1.1) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in调用'机架(1.5.2)lib/rack/lock.rb:17:在call' actionpack (4.1.1) lib/action_dispatch/middleware/static.rb:64:in调用'机架(1.5.2)lib/rack/sendfile.rb:112:在call' railties (4.1.1) lib/rails/engine.rb:514:in调用'railties(4.1.1)lib/rails/application.rb:144:在call' rack (1.5.2) lib/rack/content_length.rb:14:in调用'thin(1.6.2)lib/thin/connection.rb:86:在block in pre_process' thin (1.6.2) lib/thin/connection.rb:84:inpre_process'slin(1.6.2)lib/thin/connection.rb:53:在process' thin (1.6.2) lib/thin/connection.rb:39:inreceive_data'actomachine(1.0 .3)lib/eventmachine.rb:187:在run' thin (1.6.2) lib/thin/backends/base.rb:73:in启动'瘦(1.6.2)lib/thin/server.rb:162:在start' rack (1.5.2) lib/rack/handler/thin.rb:16:in运行'rack(1.5.2)lib/rack/server.rb:264:in start' railties (4.1.1) lib/rails/commands/server.rb:69:in启动'railties(4.1.1)lib/rails/commands/commands_tasks.rb:81:在block in server' railties (4.1.1) lib/rails/commands/commands_tasks.rb:76:in服务器'railties(4.1.1)中lib/rails/commands/commands_tasks.rb:40:在run_command!' railties (4.1.1) lib/rails/commands.rb:17:in'bin/rails:8:in ' ruby-debug-ide (0.4.23.beta1) lib/ruby-debug-ide.rb:86:indebug_program'ruby-debug-ide(0.4.23.beta1)bin/rdebug-ide:110:in ' -e:1:in'

为什么会抛出这个错误?如何让它接受请求?

1 个回答
  • 我设法解决了这个问题.问题是我在控制器中有一个叫做"发送"的动作.我现在知道"发送"是ruby中用于调用其他方法的方法.

    以下是有关ruby"send"方法的更多信息.send()在Ruby中做了什么?

    2023-01-07 20:24 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有