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:inprocess_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:inblock in instrument' activesupport (4.1.1) lib/active_support/notifications/instrumenter.rb:20:ininstrument' activesupport (4.1.1) lib/active_support/notifications.rb:159:ininstrument' 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:inprocess_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:inprocess' actionview (4.1.1) lib/action_view/rendering.rb:30:inprocess' actionpack (4.1.1) lib/action_controller/metal.rb:195:indispatch' actionpack (4.1.1) lib/action_controller/metal/rack_delegation.rb:13:indispatch' actionpack (4.1.1) lib/action_controller/metal.rb:231:inblock 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:incall' 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:incall' actionpack (4.1.1) lib/action_dispatch/routing/route_set.rb:676:incall' rack-pjax (0.7.0) lib/rack/pjax.rb:12:incall' warden (1.2.3) lib/warden/manager.rb:35:inblock in call' warden (1.2.3) lib/warden/manager.rb:34:incall' rack (1.5.2) lib/rack/etag.rb:23:incall' rack (1.5.2) lib/rack/conditionalget.rb:35:incall' rack (1.5.2) lib/rack/head.rb:11:incall' remotipart (1.2.1) lib/remotipart/middleware.rb:27:incall' actionpack (4.1.1) lib/action_dispatch/middleware/params_parser.rb:27:incall' actionpack (4.1.1) lib/action_dispatch/middleware/flash.rb:254:incall' rack (1.5.2) lib/rack/session/abstract/id.rb:225:incontext' rack (1.5.2) lib/rack/session/abstract/id.rb:220:incall' actionpack (4.1.1) lib/action_dispatch/middleware/cookies.rb:560:incall' activerecord (4.1.1) lib/active_record/query_cache.rb:36:incall' 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:incall' actionpack (4.1.1) lib/action_dispatch/middleware/callbacks.rb:29:inblock in call' activesupport (4.1.1) lib/active_support/callbacks.rb:82:inrun_callbacks' actionpack (4.1.1) lib/action_dispatch/middleware/callbacks.rb:27:incall' actionpack (4.1.1) lib/action_dispatch/middleware/reloader.rb:73:incall' actionpack (4.1.1) 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' 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:incall' railties (4.1.1) lib/rails/rack/logger.rb:38:incall_app' railties (4.1.1) lib/rails/rack/logger.rb:20:inblock 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:intagged' activesupport (4.1.1) lib/active_support/tagged_logging.rb:68:intagged' railties (4.1.1) lib/rails/rack/logger.rb:20:incall' 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:incall' rack (1.5.2) lib/rack/methodoverride.rb:21:incall' rack (1.5.2) lib/rack/runtime.rb:17:incall' activesupport (4.1.1) lib/active_support/cache/strategy/local_cache_middleware.rb:26:incall' rack (1.5.2) lib/rack/lock.rb:17:incall' actionpack (4.1.1) lib/action_dispatch/middleware/static.rb:64:incall' rack (1.5.2) lib/rack/sendfile.rb:112:incall' railties (4.1.1) lib/rails/engine.rb:514:incall' railties (4.1.1) lib/rails/application.rb:144:incall' rack (1.5.2) lib/rack/content_length.rb:14:incall' thin (1.6.2) lib/thin/connection.rb:86:inblock in pre_process' thin (1.6.2) lib/thin/connection.rb:84:inpre_process' thin (1.6.2) lib/thin/connection.rb:53:inprocess' thin (1.6.2) lib/thin/connection.rb:39:inreceive_data' eventmachine (1.0.3) lib/eventmachine.rb:187:inrun' thin (1.6.2) lib/thin/backends/base.rb:73:instart' thin (1.6.2) lib/thin/server.rb:162:instart' rack (1.5.2) lib/rack/handler/thin.rb:16:inrun' rack (1.5.2) lib/rack/server.rb:264:instart' railties (4.1.1) lib/rails/commands/server.rb:69:instart' railties (4.1.1) lib/rails/commands/commands_tasks.rb:81:inblock 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:inrun_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?
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?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With