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:in
process_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:in
block 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:in
instrument' activesupport (4.1.1) lib/active_support/notifications.rb:159:ininstrument' actionpack (4.1.1) lib/action_controller/metal/instrumentation.rb:30:in
process_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:in
process_action' actionpack (4.1.1) lib/abstract_controller/base.rb:136:inprocess' actionview (4.1.1) lib/action_view/rendering.rb:30:in
process' actionpack (4.1.1) lib/action_controller/metal.rb:195:indispatch' actionpack (4.1.1) lib/action_controller/metal/rack_delegation.rb:13:in
dispatch' 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:in
dispatch' actionpack (4.1.1) lib/action_dispatch/routing/route_set.rb:48:incall' actionpack (4.1.1) lib/action_dispatch/journey/router.rb:71:in
block 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:in
call' rack-pjax (0.7.0) lib/rack/pjax.rb:12:incall' warden (1.2.3) lib/warden/manager.rb:35:in
block in call' warden (1.2.3) lib/warden/manager.rb:34:incall' rack (1.5.2) lib/rack/etag.rb:23:in
call' rack (1.5.2) lib/rack/conditionalget.rb:35:incall' rack (1.5.2) lib/rack/head.rb:11:in
call' remotipart (1.2.1) lib/remotipart/middleware.rb:27:incall' actionpack (4.1.1) lib/action_dispatch/middleware/params_parser.rb:27:in
call' actionpack (4.1.1) lib/action_dispatch/middleware/flash.rb:254:incall' rack (1.5.2) lib/rack/session/abstract/id.rb:225:in
context' rack (1.5.2) lib/rack/session/abstract/id.rb:220:incall' actionpack (4.1.1) lib/action_dispatch/middleware/cookies.rb:560:in
call' 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:in
call' activerecord (4.1.1) lib/active_record/migration.rb:380:incall' actionpack (4.1.1) lib/action_dispatch/middleware/callbacks.rb:29:in
block 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:in
call' actionpack (4.1.1) lib/action_dispatch/middleware/reloader.rb:73:incall' actionpack (4.1.1) lib/action_dispatch/middleware/remote_ip.rb:76:in
call' 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:in
better_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:in
call' actionpack (4.1.1) lib/action_dispatch/middleware/show_exceptions.rb:30:incall' railties (4.1.1) lib/rails/rack/logger.rb:38:in
call_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:in
block 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:in
tagged' railties (4.1.1) lib/rails/rack/logger.rb:20:incall' quiet_assets (1.0.2) lib/quiet_assets.rb:18:in
call_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:in
call' rack (1.5.2) lib/rack/runtime.rb:17:incall' activesupport (4.1.1) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in
call' rack (1.5.2) lib/rack/lock.rb:17:incall' actionpack (4.1.1) lib/action_dispatch/middleware/static.rb:64:in
call' rack (1.5.2) lib/rack/sendfile.rb:112:incall' railties (4.1.1) lib/rails/engine.rb:514:in
call' railties (4.1.1) lib/rails/application.rb:144:incall' rack (1.5.2) lib/rack/content_length.rb:14:in
call' thin (1.6.2) lib/thin/connection.rb:86:inblock in pre_process' thin (1.6.2) lib/thin/connection.rb:84:in
pre_process' thin (1.6.2) lib/thin/connection.rb:53:inprocess' thin (1.6.2) lib/thin/connection.rb:39:in
receive_data' eventmachine (1.0.3) lib/eventmachine.rb:187:inrun' thin (1.6.2) lib/thin/backends/base.rb:73:in
start' thin (1.6.2) lib/thin/server.rb:162:instart' rack (1.5.2) lib/rack/handler/thin.rb:16:in
run' rack (1.5.2) lib/rack/server.rb:264:instart' railties (4.1.1) lib/rails/commands/server.rb:69:in
start' 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:in
server' 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:in
debug_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