4
votes

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?

1
Can we actually see your Controller method for the POST action?richsinn
The error will be to do with your controller backend (which you've not posted). The actual error is wrong number of arguments (1 for 0) - are you calling any ActiveRecord methods with an argument?Richard Peck
I have added the code for the controller.startupsmith
We need to see your models, looks like you have a create method redefined without argumentos or you are doing a before, after callback.Jorge de los Santos
Even when I comment out the create code and the other code it still does it...startupsmith

1 Answers

8
votes

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?