4

I am using rails 4.1.

I have setup a custom controller. I have configured the routes with:

resources :chats

I am trying to make a post request to the controller using jQuery. Here is the code:

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

Edit: And here is the code for my controller -

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

Edit: And here is the code for my model -

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

However it throws an error which is:

ArgumentError - wrong number of arguments (1 for 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:in 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:in 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:in process' actionview (4.1.1) lib/action_view/rendering.rb:30:inprocess' 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:incall' 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:in call' rack (1.5.2) lib/rack/etag.rb:23:incall' rack (1.5.2) lib/rack/conditionalget.rb:35:in call' rack (1.5.2) lib/rack/head.rb:11:incall' remotipart (1.2.1) lib/remotipart/middleware.rb:27:in call' actionpack (4.1.1) lib/action_dispatch/middleware/params_parser.rb:27:incall' actionpack (4.1.1) lib/action_dispatch/middleware/flash.rb:254:in call' rack (1.5.2) lib/rack/session/abstract/id.rb:225:incontext' rack (1.5.2) lib/rack/session/abstract/id.rb:220:in call' actionpack (4.1.1) lib/action_dispatch/middleware/cookies.rb:560:incall' activerecord (4.1.1) lib/active_record/query_cache.rb:36:in call' activerecord (4.1.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:incall' activerecord (4.1.1) lib/active_record/migration.rb:380:in call' actionpack (4.1.1) lib/action_dispatch/middleware/callbacks.rb:29:inblock in call' activesupport (4.1.1) lib/active_support/callbacks.rb:82:in run_callbacks' actionpack (4.1.1) lib/action_dispatch/middleware/callbacks.rb:27:incall' actionpack (4.1.1) lib/action_dispatch/middleware/reloader.rb:73:in call' actionpack (4.1.1) lib/action_dispatch/middleware/remote_ip.rb:76:incall' 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:inbetter_errors_call' better_errors (1.1.0) lib/better_errors/middleware.rb:56:in call' actionpack (4.1.1) lib/action_dispatch/middleware/debug_exceptions.rb:17:incall' actionpack (4.1.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in call' railties (4.1.1) lib/rails/rack/logger.rb:38:incall_app' railties (4.1.1) lib/rails/rack/logger.rb:20:in block in call' activesupport (4.1.1) lib/active_support/tagged_logging.rb:68:inblock in tagged' activesupport (4.1.1) lib/active_support/tagged_logging.rb:26:in tagged' activesupport (4.1.1) lib/active_support/tagged_logging.rb:68:intagged' railties (4.1.1) lib/rails/rack/logger.rb:20:in 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:in call' rack (1.5.2) lib/rack/methodoverride.rb:21:incall' 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:incall' rack (1.5.2) lib/rack/lock.rb:17:in call' actionpack (4.1.1) lib/action_dispatch/middleware/static.rb:64:incall' rack (1.5.2) lib/rack/sendfile.rb:112:in call' railties (4.1.1) lib/rails/engine.rb:514:incall' railties (4.1.1) lib/rails/application.rb:144:in call' rack (1.5.2) lib/rack/content_length.rb:14:incall' thin (1.6.2) lib/thin/connection.rb:86:in block in pre_process' thin (1.6.2) lib/thin/connection.rb:84:inpre_process' thin (1.6.2) lib/thin/connection.rb:53:in process' thin (1.6.2) lib/thin/connection.rb:39:inreceive_data' eventmachine (1.0.3) lib/eventmachine.rb:187:in run' thin (1.6.2) lib/thin/backends/base.rb:73:instart' thin (1.6.2) lib/thin/server.rb:162:in start' rack (1.5.2) lib/rack/handler/thin.rb:16:inrun' rack (1.5.2) lib/rack/server.rb:264:in start' railties (4.1.1) lib/rails/commands/server.rb:69:instart' railties (4.1.1) lib/rails/commands/commands_tasks.rb:81:in block in server' railties (4.1.1) lib/rails/commands/commands_tasks.rb:76:inserver' railties (4.1.1) lib/rails/commands/commands_tasks.rb:40:in run_command!' railties (4.1.1) lib/rails/commands.rb:17:in' bin/rails:8:in <top (required)>' 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 <top (required)>' -e:1:in'

Why is it throwing this error? How can I get it to accept the request?

startupsmith
  • 5,554
  • 10
  • 50
  • 71

1 Answers1

8

I managed to solve this problem. The issue was that I had an action in the controller called "send". I now know that "send" is a method used in ruby to call other methods.

Here is some more info on the ruby "send" method. What does send() do in Ruby?

Community
  • 1
  • 1
startupsmith
  • 5,554
  • 10
  • 50
  • 71
  • Thank you! Have been banging my head against the wall trying to figure out what was causing this. – Scott Lieberman Oct 22 '14 at 17:07
  • Be aware that you can hit this snag with a controller action matching *any* pre-existing method. I just experienced the same problem, but it was due to my use of `process` which is a Rails-defined method on `ActionController::Base`. – Frank Koehl Feb 10 '16 at 17:22