Rails 4 Boolean: Can't be set to true - ruby-on-rails
I have a model with a boolean attribute "facturar" . I cannot set this attribute to true either through GUI or console. For some reason I can set it to false through console but not GUI. This happens if when I try to update any record of the model. Similar attribute "facturar_proveedor", also a boolean can be set to true or false in both GUI and console. What could cause this weird bug?
Pertinent Code
create_table "factura_items", force: :cascade do |t|
t.integer "factura_id"
t.integer "ordene_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "facturar"
t.integer "iva", limit: 8
t.integer "subtotal", limit: 8
t.boolean "facturar_proveedor"
t.integer "subcuenta_puc_id"
end
Controller
class FacturaItemsController < ApplicationController
before_action :set_factura_item, only: [:show, :edit, :update, :destroy]
# GET /factura_items
# GET /factura_items.json
def index
#search = FacturaItemSearch.new(params[:search])
authorize FacturaItem
#factura_items = #search.scope
#factura_items = FacturaItem.all
end
# GET /factura_items/1
# GET /factura_items/1.json
def show
#factura_items = FacturaItem.all
authorize #factura_item
#ordene = Ordene.all
#medio = Medio.all
end
# GET /factura_items/new
def new
#factura_item = FacturaItem.new
authorize #factura_item
end
# GET /factura_items/1/edit
def edit
authorize #factura_item
end
# POST /factura_items
# POST /factura_items.json
def create
#factura_item = FacturaItem.new(factura_item_params)
authorize #factura_item
#ordenes = Ordene.all
#medio = Medio.all
respond_to do |format|
if #factura_item.save
format.html { redirect_to #factura_item, notice: 'Factura item was successfully created.' }
format.json { render :show, status: :created, location: #factura_item }
else
format.html { render :new }
format.json { render json: #factura_item.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /factura_items/1
# PATCH/PUT /factura_items/1.json
def update
respond_to do |format|
authorize #factura_item
if #factura_item.update(factura_item_params)
format.html { redirect_to #factura_item, notice: 'Item de factura asociado con factura.' }
format.json { render :show, status: :ok, location: #factura_item }
else
format.html { render :edit }
format.json { render json: #factura_item.errors, status: :unprocessable_entity }
end
end
end
# DELETE /factura_items/1
# DELETE /factura_items/1.json
def destroy
#factura_item.destroy
authorize #factura_item
respond_to do |format|
format.html { redirect_to factura_items_url, notice: 'Factura item was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_factura_item
#factura_item = FacturaItem.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def factura_item_params
params.require(:factura_item).permit(:factura_id, :ordene_id, :medio_id, :revisado, :fecha_orden, :medida, :unidad, :costo_unidad, :total, :facturar, :cantidad, :facturar_proveedor, :sin_iva, :subcuenta_puc_id)
end
end
Edit Form
<% content_for :title do %>Factura Item<% end %>
<h3>Asignar Item a Factura</h3>
<div class="form">
<%= simple_form_for #factura_item do |form| %>
<%= form.input :facturar, label: 'Facturar a Cliente' %>
<%= form.input :facturar_proveedor, label: 'Facturar a Proveedor' %>
<%= form.input :sin_iva %>
<%= form.association :factura, :label_method => :id, include_blank: true, label: "Factura" %>
<%= form.button :submit, 'Guardar', class: 'submit' %>
<% end %>
</div>
<%= link_to 'Regresar', factura_items_path %>
POST logs
Started GET "/factura_items/1/edit" for ::1 at 2015-10-26 22:10:57 -0500
Processing by FacturaItemsController#edit as HTML
Parameters: {"id"=>"1"}
FacturaItem Load (0.3ms) SELECT "factura_items".* FROM "factura_items" WHERE "factura_items"."id" = $1 LIMIT 1 [["id", 1]]
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Factura Load (0.8ms) SELECT "facturas".* FROM "facturas"
Rendered factura_items/edit.html.erb within layouts/application (47.8ms)
Rendered layouts/_navigation_links.html.erb (2.2ms)
Rendered layouts/_navigation.html.erb (3.7ms)
Rendered layouts/_messages.html.erb (0.1ms)
Completed 200 OK in 410ms (Views: 403.8ms | ActiveRecord: 2.6ms)
Started PATCH "/factura_items/1" for ::1 at 2015-10-26 22:11:36 -0500
Processing by FacturaItemsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"r1IUDwfqd4U48wvc07dSUjCI2ki/iQfHEu7QMr9peNIaDPimLqCVX6HPjCV+pytGOwV4jW1FSSguFK71g+re0g==", "factura_item"=>{"facturar"=>"1", "facturar_proveedor"=>"0", "sin_iva"=>"0", "factura_id"=>"1"}, "commit"=>"Guardar", "id"=>"1"}
FacturaItem Load (0.4ms) SELECT "factura_items".* FROM "factura_items" WHERE "factura_items"."id" = $1 LIMIT 1 [["id", 1]]
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
(0.2ms) BEGIN
(1.1ms) SELECT SUM("transaccions"."debito") FROM "transaccions"
SQL (2.5ms) INSERT INTO "transaccions" ("factura_item_id", "fecha", "debito", "subcuenta_puc_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["factura_item_id", 1], ["fecha", "2015-10-26"], ["debito", 1160000], ["subcuenta_puc_id", 128], ["created_at", "2015-10-27 03:11:36.359055"], ["updated_at", "2015-10-27 03:11:36.359055"]]
SQL (0.6ms) INSERT INTO "transaccions" ("factura_item_id", "fecha", "credito", "subcuenta_puc_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["factura_item_id", 1], ["fecha", "2015-10-26"], ["credito", 1000000], ["subcuenta_puc_id", 878], ["created_at", "2015-10-27 03:11:36.367100"], ["updated_at", "2015-10-27 03:11:36.367100"]]
SQL (0.7ms) INSERT INTO "transaccions" ("factura_item_id", "fecha", "credito", "subcuenta_puc_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["factura_item_id", 1], ["fecha", "2015-10-26"], ["credito", 160000], ["subcuenta_puc_id", 880], ["created_at", "2015-10-27 03:11:36.371111"], ["updated_at", "2015-10-27 03:11:36.371111"]]
Ordene Load (0.7ms) SELECT "ordenes".* FROM "ordenes" WHERE "ordenes"."id" = $1 LIMIT 1 [["id", 1]]
Medio Load (0.6ms) SELECT "medios".* FROM "medios" WHERE "medios"."id" = $1 LIMIT 1 [["id", 2]]
(1.8ms) COMMIT
Redirected to http://localhost:3000/factura_items/1
Completed 302 Found in 117ms (ActiveRecord: 16.2ms)
Started GET "/factura_items/1" for ::1 at 2015-10-26 22:11:36 -0500
Processing by FacturaItemsController#show as HTML
Parameters: {"id"=>"1"}
FacturaItem Load (0.5ms) SELECT "factura_items".* FROM "factura_items" WHERE "factura_items"."id" = $1 LIMIT 1 [["id", 1]]
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Rendered factura_items/show.html.erb within layouts/application (4.0ms)
Completed 500 Internal Server Error in 14ms
NoMethodError - undefined method `id' for nil:NilClass:
app/views/factura_items/show.html.erb:3:in `_app_views_factura_items_show_html_erb__2824287575617260826_70230202524220'
actionview (4.2.0) lib/action_view/template.rb:145:in `block in render'
activesupport (4.2.0) lib/active_support/notifications.rb:166:in `instrument'
actionview (4.2.0) lib/action_view/template.rb:333:in `instrument'
actionview (4.2.0) lib/action_view/template.rb:143:in `render'
actionview (4.2.0) lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template'
actionview (4.2.0) lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
activesupport (4.2.0) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (4.2.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.2.0) lib/active_support/notifications.rb:164:in `instrument'
actionview (4.2.0) lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
actionview (4.2.0) lib/action_view/renderer/template_renderer.rb:53:in `block in render_template'
actionview (4.2.0) lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout'
actionview (4.2.0) lib/action_view/renderer/template_renderer.rb:52:in `render_template'
actionview (4.2.0) lib/action_view/renderer/template_renderer.rb:14:in `render'
actionview (4.2.0) lib/action_view/renderer/renderer.rb:42:in `render_template'
actionview (4.2.0) lib/action_view/renderer/renderer.rb:23:in `render'
actionview (4.2.0) lib/action_view/rendering.rb:100:in `_render_template'
actionpack (4.2.0) lib/action_controller/metal/streaming.rb:217:in `_render_template'
actionview (4.2.0) lib/action_view/rendering.rb:83:in `render_to_body'
actionpack (4.2.0) lib/action_controller/metal/rendering.rb:32:in `render_to_body'
actionpack (4.2.0) lib/action_controller/metal/renderers.rb:37:in `render_to_body'
actionpack (4.2.0) lib/abstract_controller/rendering.rb:25:in `render'
actionpack (4.2.0) lib/action_controller/metal/rendering.rb:16:in `render'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:41:in `block (2 levels) in render'
activesupport (4.2.0) lib/active_support/core_ext/benchmark.rb:12:in `block in ms'
/Users/davefogo/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/benchmark.rb:303:in `realtime'
activesupport (4.2.0) lib/active_support/core_ext/benchmark.rb:12:in `ms'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:41:in `block in render'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:84:in `cleanup_view_runtime'
activerecord (4.2.0) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:40:in `render'
actionpack (4.2.0) lib/action_controller/metal/implicit_render.rb:10:in `default_render'
actionpack (4.2.0) lib/action_controller/metal/implicit_render.rb:5:in `send_action'
actionpack (4.2.0) lib/abstract_controller/base.rb:198:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.2.0) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (4.2.0) lib/active_support/callbacks.rb:117:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `_run_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_process_action_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.0) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.2.0) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (4.2.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.2.0) lib/active_support/notifications.rb:164:in `instrument'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
activerecord (4.2.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.2.0) lib/abstract_controller/base.rb:137:in `process'
actionview (4.2.0) lib/action_view/rendering.rb:30:in `process'
actionpack (4.2.0) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.2.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.2.0) lib/action_controller/metal.rb:236:in `block in action'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:42:in `serve'
actionpack (4.2.0) lib/action_dispatch/journey/router.rb:43:in `block in serve'
actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `serve'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:802:in `call'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `call'
rack (1.6.0) lib/rack/etag.rb:24:in `call'
rack (1.6.0) lib/rack/conditionalget.rb:25:in `call'
rack (1.6.0) lib/rack/head.rb:13:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/flash.rb:260:in `call'
rack (1.6.0) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.6.0) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/cookies.rb:560:in `call'
activerecord (4.2.0) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.2.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:647:in `call'
activerecord (4.2.0) lib/active_record/migration.rb:378:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `_run_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_call_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/reloader.rb:73:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
better_errors (2.1.1) lib/better_errors/middleware.rb:84:in `protected_app_call'
better_errors (2.1.1) lib/better_errors/middleware.rb:79:in `better_errors_call'
better_errors (2.1.1) lib/better_errors/middleware.rb:57:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
web-console (2.1.2) lib/web_console/middleware.rb:37:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.2.0) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.2.0) lib/rails/rack/logger.rb:20:in `call'
quiet_assets (1.1.0) lib/quiet_assets.rb:27:in `call_with_quiet_assets'
actionpack (4.2.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.6.0) lib/rack/methodoverride.rb:22:in `call'
rack (1.6.0) lib/rack/runtime.rb:18:in `call'
activesupport (4.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
rack (1.6.0) lib/rack/lock.rb:17:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/static.rb:113:in `call'
rack (1.6.0) lib/rack/sendfile.rb:113:in `call'
railties (4.2.0) lib/rails/engine.rb:518:in `call'
railties (4.2.0) lib/rails/application.rb:164:in `call'
rack (1.6.0) lib/rack/lock.rb:17:in `call'
rack (1.6.0) lib/rack/content_length.rb:15:in `call'
rack (1.6.0) lib/rack/handler/webrick.rb:89:in `service'
/Users/davefogo/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
/Users/davefogo/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
/Users/davefogo/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'
Started POST "/__better_errors/726ca75c50ed7ed5/variables" for ::1 at 2015-10-26 22:11:36 -0500
FacturaItem Load (0.8ms) SELECT "factura_items".* FROM "factura_items"
Ordene Load (1.1ms) SELECT "ordenes".* FROM "ordenes"
Medio Load (1.6ms) SELECT "medios".* FROM "medio
Model
class FacturaItem < ActiveRecord::Base
belongs_to :factura
belongs_to :medio
belongs_to :ordene
belongs_to :subcuenta_puc
has_many :incentivos
before_save :calculate_total
around_update :generate_transaccion_facturar_cliente, :if => :facturar?
#running 1, 2 ,3 => before update, 4 => after_update OK
before_update :generate_transaccion_facturar_proveedor, :if => :facturar_proveedor?
after_update :generate_transaccion_incentivo_automatico, :if => :facturar?
def calculate_total
self.subtotal = (costo_unidad * cantidad) - (costo_unidad * descuento)
self.iva = (subtotal * 0.16)
self.total = subtotal + iva
end
def generate_transaccion_facturar_cliente
#This callback creates a activo transaccions for the facturacion to a cliente.
self.subcuenta_puc_id = 128
Transaccion.create!(factura_item_id: self.id, fecha: Time.now, debito: self.total, subcuenta_puc_id: self.subcuenta_puc_id)
# generate_transaccion_facturar_cliente_pasivo
self.subcuenta_puc_id = 878
Transaccion.create!(factura_item_id: self.id, fecha: Time.now, credito: self.subtotal, subcuenta_puc_id: self.subcuenta_puc_id)
#generate_transaccion_factura_cliente_iva
self.subcuenta_puc_id = 880
self.iva = 0 if self.sin_iva == true
Transaccion.create!(factura_item_id: self.id, fecha: Time.now, credito: self.iva, subcuenta_puc_id: self.subcuenta_puc_id)
end
def generate_transaccion_facturar_proveedor
if cobro_proveedor == 'Facturacion'
#This callback creates an activo deudores transaccion for the facturacion to a proveedor for a incentivo.
self.subcuenta_puc_id = 129
Transaccion.create!(factura_item_id: self.id, fecha: Time.now, debito: self.subtotal, subcuenta_puc_id: self.subcuenta_puc_id)
#generate_transaccion_factura_proveedor_iva
self.subcuenta_puc_id = 742
#if self.sin_iva == true
#self.iva = 0
Transaccion.create!(factura_item_id: self.id, fecha: Time.now, credito: self.iva, subcuenta_puc_id: self.subcuenta_puc_id)
#Tgenerate_transaccion_facturar_proveedor_ingreso_operacional, his callback creates an ingreso operacional transaccion for the facturacion to a proveedor for a incentivo.
self.subcuenta_puc_id = 1232
Transaccion.create!(factura_item_id: self.id, fecha: Time.now, credito: self.subtotal, subcuenta_puc_id: self.subcuenta_puc_id)
end
end
def generate_transaccion_incentivo_automatico
if ordene.medio.tipo_de_volumen == 'Automatico'
#This callback creates an activo incentivos por cruzar
self.subcuenta_puc_id = 130
Transaccion.create!(factura_item_id: self.id, fecha: Time.now, debito: self.ordene.incentivo, subcuenta_puc_id: self.subcuenta_puc_id)
#This callback creates an ingreso operacional cruce, :generate_transaccion_incentivo_automatico_ingreso_operacional
self.subcuenta_puc_id = 1233
Transaccion.create!(factura_item_id: self.id, fecha: Time.now, credito: self.ordene.incentivo, subcuenta_puc_id: self.subcuenta_puc_id)
end
end
end
SOLUTION: I have modified the callbacks in the model. I removed the around_update callback and placed its contents in after_update.
Your logs for PATCH seems weird since it is not doing anything like:
UPDATE "factura_items" SET "facturar" = $1, "updated_at" = $2 WHERE "factura_items"."id" = $3
And there are lots of logs that are not produced by your controller update action behavior like:
(1.1ms) SELECT SUM("transaccions"."debito") FROM "transaccions"
SQL (2.5ms) INSERT INTO "transaccions" ("factura_item_id", "fecha", "debito", "subcuenta_puc_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["factura_item_id", 1], ["fecha", "2015-10-26"], ["debito", 1160000], ["subcuenta_puc_id", 128], ["created_at", "2015-10-27 03:11:36.359055"], ["updated_at", "2015-10-27 03:11:36.359055"]]
SQL (0.6ms) INSERT INTO "transaccions" ("factura_item_id", "fecha", "credito", "subcuenta_puc_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["factura_item_id", 1], ["fecha", "2015-10-26"], ["credito", 1000000], ["subcuenta_puc_id", 878], ["created_at", "2015-10-27 03:11:36.367100"], ["updated_at", "2015-10-27 03:11:36.367100"]]
SQL (0.7ms) INSERT INTO "transaccions" ("factura_item_id", "fecha", "credito", "subcuenta_puc_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["factura_item_id", 1], ["fecha", "2015-10-26"], ["credito", 160000], ["subcuenta_puc_id", 880], ["created_at", "2015-10-27 03:11:36.371111"], ["updated_at", "2015-10-27 03:11:36.371111"]]
SOLUTION: I have modified the callbacks in the model. I removed the around_update callback and placed its contents in after_update.
Related
update record by ajax
I am showing a view where I show several records and I have a checkbox that I would like that when I change its value is sent via ajax the request to update the record, so far it works fine and updates, the problem is that when doing the respond_to still keeps the PATCH or PUT method to do the redirect. This is my checkbox: <div class="form-check form-switch estado float-end"> <%= check_box_tag("reminder_status", value = "1", checked = #program.reminder.status, options = {id: "#{#program.reminder.id}", data_reminder_id: #program.reminder.id, class: 'form-check-input small toggle mt-2 mx-2 text-success', onchange: "reminder_status(this);"})%> <%= label_tag "reminder_status", "#{t(:active)}", class: "form-control-placeholder pt-1 text-dark", id: "label_status" %> </div> <script type="text/javascript"> function reminder_status(chk) { //function to update the completed field and mark the task as completed $.ajax({ type: "PATCH", url: "/programs/<%=#program.code%>/reminders/"+$(chk).attr('id'), dataType: "script", data: { reminder: {title : chk.checked} } }); } </script> and this is the update method of reminders_controller: def update respond_to do |format| if #reminder.update(reminder_params) format.html { redirect_to show_program_client_path(#program.entity, program_id: #program.id, remove_modal: true), notice: "Reminders was successfully updated." } else format.html { render :edit, status: :unprocessable_entity } format.json { render json: #reminder.errors, status: :unprocessable_entity } end end end and this is the result I get when I make some change in the check, first it is updating the reminder and it works fine but then when I do the respond_to it still keeps the PATCH method instead of GET for program when I just try to redirect. Started PATCH "/programs/6xGUJq/reminders/161" for 127.0.0.1 at 2023-01-15 12:38:38 -0400 Processing by RemindersController#update as JS Parameters: {"reminder"=>{"title"=>"false"}, "program_id"=>"6xGUJq", "id"=>"161"} Program Load (0.4ms) SELECT "programs".* FROM "programs" WHERE "programs"."deleted_at" IS NULL AND "programs"."id" = $1 LIMIT $2 [["id", 175], ["LIMIT", 1]] ↳ app/controllers/reminders_controller.rb:107:in `set_program' Reminder Load (0.3ms) SELECT "reminders".* FROM "reminders" WHERE "reminders"."deleted_at" IS NULL AND "reminders"."program_id" = $1 LIMIT $2 [["program_id", 175], ["LIMIT", 1]] ↳ app/controllers/reminders_controller.rb:103:in `set_reminder' (0.1ms) BEGIN ↳ app/controllers/reminders_controller.rb:28:in `block in update' Reminder Update (0.3ms) UPDATE "reminders" SET "title" = $1, "updated_at" = $2 WHERE "reminders"."id" = $3 [["title", "false"], ["updated_at", "2023-01-15 16:38:38.067467"], ["id", 161]] ↳ app/controllers/reminders_controller.rb:28:in `block in update' (25.4ms) COMMIT ↳ app/controllers/reminders_controller.rb:28:in `block in update' Client Load (0.4ms) SELECT "clients".* FROM "clients" WHERE "clients"."deleted_at" IS NULL AND "clients"."id" = $1 LIMIT $2 [["id", 6], ["LIMIT", 1]] ↳ app/controllers/reminders_controller.rb:30:in `block (2 levels) in update' Redirected to http://localhost:3000/clients/LM9UBL/show_program?program_id=175&remove_modal=true Completed 302 Found in 35ms (ActiveRecord: 27.0ms | Allocations: 7281) Started PATCH "/clients/LM9UBL/show_program?program_id=175&remove_modal=true" for 127.0.0.1 at 2023-01-15 12:38:38 -0400 ActionController::RoutingError (No route matches [PATCH] "/clients/LM9UBL/show_program"): actionpack (6.0.4.8) lib/action_dispatch/middleware/debug_exceptions.rb:36:in `call' web-console (4.2.0) lib/web_console/middleware.rb:132:in `call_app' web-console (4.2.0) lib/web_console/middleware.rb:28:in `block in call' web-console (4.2.0) lib/web_console/middleware.rb:17:in `catch' web-console (4.2.0) lib/web_console/middleware.rb:17:in `call' actionpack (6.0.4.8) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' railties (6.0.4.8) lib/rails/rack/logger.rb:37:in `call_app' railties (6.0.4.8) lib/rails/rack/logger.rb:26:in `block in call' activesupport (6.0.4.8) lib/active_support/tagged_logging.rb:80:in `block in tagged' activesupport (6.0.4.8) lib/active_support/tagged_logging.rb:28:in `tagged' activesupport (6.0.4.8) lib/active_support/tagged_logging.rb:80:in `tagged' railties (6.0.4.8) lib/rails/rack/logger.rb:26:in `call' sprockets-rails (3.4.2) lib/sprockets/rails/quiet_assets.rb:13:in `call' actionpack (6.0.4.8) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' actionpack (6.0.4.8) lib/action_dispatch/middleware/request_id.rb:27:in `call' rack (2.2.3) lib/rack/method_override.rb:24:in `call' rack (2.2.3) lib/rack/runtime.rb:22:in `call' activesupport (6.0.4.8) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' actionpack (6.0.4.8) lib/action_dispatch/middleware/executor.rb:14:in `call' actionpack (6.0.4.8) lib/action_dispatch/middleware/static.rb:126:in `call' rack (2.2.3) lib/rack/sendfile.rb:110:in `call' actionpack (6.0.4.8) lib/action_dispatch/middleware/host_authorization.rb:103:in `call' webpacker (4.3.0) lib/webpacker/dev_server_proxy.rb:23:in `perform_request' rack-proxy (0.7.2) lib/rack/proxy.rb:67:in `call' railties (6.0.4.8) lib/rails/engine.rb:527:in `call' puma (4.3.12) lib/puma/configuration.rb:228:in `call' puma (4.3.12) lib/puma/server.rb:727:in `handle_request' puma (4.3.12) lib/puma/server.rb:476:in `process_client' puma (4.3.12) lib/puma/server.rb:332:in `block in run' puma (4.3.12) lib/puma/thread_pool.rb:134:in `block in spawn_thread'
ActionController known Format
I am having an issue with this code. It is for uploading an audio file. When I upload it I get an error saying this: ActionController::UnknownFormat at /users/1/audios/dfdfdsdsf ============================================================ > ActionController::UnknownFormat app/controllers/audios_controller.rb, line 67 --------------------------------------------- ``` ruby 62 if #audio.errors.empty? && #audio.update_attributes(update_audio_params) 63 respond_to do |format| 64 format.html { redirect_to user_audios_path(#user) } 65 end 66 else > 67 respond_to do |format| 68 format.html { render :edit } 69 format.js { render json: { result: :failed, errors: #audio.errors } } 70 end 71 end 72 end ``` App backtrace ------------- - app/controllers/audios_controller.rb:67:in `update' Full backtrace -------------- - actionpack (4.2.3) lib/action_controller/metal/mime_responds.rb:217:in `respond_to' - app/controllers/audios_controller.rb:67:in `update' - actionpack (4.2.3) lib/action_controller/metal/implicit_render.rb:4:in `send_action' - actionpack (4.2.3) lib/abstract_controller/base.rb:198:in `process_action' - actionpack (4.2.3) lib/action_controller/metal/rendering.rb:10:in `process_action' - actionpack (4.2.3) lib/abstract_controller/callbacks.rb:20:in `block in process_action' - activesupport (4.2.3) lib/active_support/callbacks.rb:115:in `call' - activesupport (4.2.3) lib/active_support/callbacks.rb:553:in `block (2 levels) in compile' - activesupport (4.2.3) lib/active_support/callbacks.rb:503:in `call' - activesupport (4.2.3) lib/active_support/callbacks.rb:88:in `run_callbacks' - actionpack (4.2.3) lib/abstract_controller/callbacks.rb:19:in `process_action' - actionpack (4.2.3) lib/action_controller/metal/rescue.rb:29:in `process_action' - actionpack (4.2.3) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action' - activesupport (4.2.3) lib/active_support/notifications.rb:164:in `block in instrument' - activesupport (4.2.3) lib/active_support/notifications/instrumenter.rb:20:in `instrument' - activesupport (4.2.3) lib/active_support/notifications.rb:164:in `instrument' - actionpack (4.2.3) lib/action_controller/metal/instrumentation.rb:30:in `process_action' - actionpack (4.2.3) lib/action_controller/metal/params_wrapper.rb:250:in `process_action' - activerecord (4.2.3) lib/active_record/railties/controller_runtime.rb:18:in `process_action' - actionpack (4.2.3) lib/abstract_controller/base.rb:137:in `process' - actionview (4.2.3) lib/action_view/rendering.rb:30:in `process' - rack-mini-profiler (0.9.8) lib/mini_profiler/profiling_methods.rb:106:in `block in profile_method' - actionpack (4.2.3) lib/action_controller/metal.rb:196:in `dispatch' - actionpack (4.2.3) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch' - actionpack (4.2.3) lib/action_controller/metal.rb:237:in `block in action' - actionpack (4.2.3) lib/action_dispatch/routing/route_set.rb:76:in `dispatch' - actionpack (4.2.3) lib/action_dispatch/routing/route_set.rb:45:in `serve' - actionpack (4.2.3) lib/action_dispatch/journey/router.rb:43:in `block in serve' - actionpack (4.2.3) lib/action_dispatch/journey/router.rb:30:in `serve' - actionpack (4.2.3) lib/action_dispatch/routing/route_set.rb:821:in `call' - warden (1.2.3) lib/warden/manager.rb:35:in `block in call' - warden (1.2.3) lib/warden/manager.rb:34:in `call' - rack (1.6.4) lib/rack/etag.rb:24:in `call' - rack (1.6.4) lib/rack/conditionalget.rb:38:in `call' - rack (1.6.4) lib/rack/head.rb:13:in `call' - actionpack (4.2.3) lib/action_dispatch/middleware/params_parser.rb:27:in `call' - actionpack (4.2.3) lib/action_dispatch/middleware/flash.rb:260:in `call' - rack (1.6.4) lib/rack/session/abstract/id.rb:225:in `context' - rack (1.6.4) lib/rack/session/abstract/id.rb:220:in `call' - actionpack (4.2.3) lib/action_dispatch/middleware/cookies.rb:560:in `call' - activerecord (4.2.3) lib/active_record/query_cache.rb:36:in `call' - activerecord (4.2.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call' - activerecord (4.2.3) lib/active_record/migration.rb:377:in `call' - actionpack (4.2.3) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' - activesupport (4.2.3) lib/active_support/callbacks.rb:84:in `run_callbacks' - actionpack (4.2.3) lib/action_dispatch/middleware/callbacks.rb:27:in `call' - actionpack (4.2.3) lib/action_dispatch/middleware/reloader.rb:73:in `call' - actionpack (4.2.3) lib/action_dispatch/middleware/remote_ip.rb:78:in `call' - better_errors (2.1.1) lib/better_errors/middleware.rb:84:in `protected_app_call' - better_errors (2.1.1) lib/better_errors/middleware.rb:79:in `better_errors_call' - better_errors (2.1.1) lib/better_errors/middleware.rb:57:in `call' - actionpack (4.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call' - web-console (2.2.1) lib/web_console/middleware.rb:39:in `call' - actionpack (4.2.3) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' - railties (4.2.3) lib/rails/rack/logger.rb:38:in `call_app' - railties (4.2.3) lib/rails/rack/logger.rb:20:in `block in call' - activesupport (4.2.3) lib/active_support/tagged_logging.rb:68:in `block in tagged' - activesupport (4.2.3) lib/active_support/tagged_logging.rb:26:in `tagged' - activesupport (4.2.3) lib/active_support/tagged_logging.rb:68:in `tagged' - railties (4.2.3) lib/rails/rack/logger.rb:20:in `call' - actionpack (4.2.3) lib/action_dispatch/middleware/request_id.rb:21:in `call' - rack (1.6.4) lib/rack/methodoverride.rb:22:in `call' - rack (1.6.4) lib/rack/runtime.rb:18:in `call' - activesupport (4.2.3) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call' - rack (1.6.4) lib/rack/lock.rb:17:in `call' - actionpack (4.2.3) lib/action_dispatch/middleware/static.rb:116:in `call' - rack (1.6.4) lib/rack/sendfile.rb:113:in `call' - rack-mini-profiler (0.9.8) lib/mini_profiler/profiler.rb:282:in `call' - railties (4.2.3) lib/rails/engine.rb:518:in `call' - railties (4.2.3) lib/rails/application.rb:165:in `call' - rack (1.6.4) lib/rack/content_length.rb:15:in `call' - puma (2.12.2) lib/puma/server.rb:539:in `handle_request' - puma (2.12.2) lib/puma/server.rb:386:in `process_client' - puma (2.12.2) lib/puma/server.rb:269:in `block in run' - puma (2.12.2) lib/puma/thread_pool.rb:106:in `block in spawn_thread' It might have to do with the respond_to block. Here is the code of that bellow: def update if params[:audio][:attachment].blank? && update_image_params.present? #audio.update_audio_cover_picture update_image_params["photo"] end if #audio.errors.empty? && #audio.update_attributes(update_audio_params) respond_to do |format| format.html { redirect_to user_audios_path(#user) } end else respond_to do |format| format.html { render :edit } format.js { render json: { result: :failed, errors: #audio.errors } } end end end This is a copy of the same code I use for my other project. It completely works on that app: def update if params[:book][:attachment].blank? && update_image_params.present? #book.update_book_cover_picture update_image_params["photo"] end if #book.errors.empty? && #book.update_attributes(update_book_params) respond_to do |format| format.html { redirect_to user_books_path(#user) } format.json { render json: { result: :success, url: user_books_url(#user) } } end else respond_to do |format| format.html { render :edit } format.js { render json: { result: :failed, errors: #book.errors } } end end end
From what your stack tells, it has something to do with the update method on your #audio. You are probably passing in weird parameters, or somehow filtering it incorrectly in your update_audio_params method.
Koala::Facebook::AuthenticationError - type: OAuthException, code: 2500, message
I am trying to setup a project. Everything has gone fine but this error keeps prompting up and nothing seems to help. Here is the log when i hit the url. Koala::Facebook::AuthenticationError - type: OAuthException, code: 2500, message: An active access token must be used to query information about the current user. [HTTP 400]: koala (2.2.0) lib/koala/api/graph_api.rb:515:in `block in graph_call' koala (2.2.0) lib/koala/api.rb:80:in `api' koala (2.2.0) lib/koala/api/graph_api.rb:513:in `graph_call' koala (2.2.0) lib/koala/api/graph_api.rb:115:in `get_connection' () home/yogesh/Desktop/jugojuice/jugojuice/app/controllers/pages_controller.rb:98:in `show' () home/yogesh/Desktop/jugojuice/jugojuice/app/controllers/pages_controller.rb:64:in `home' actionpack (4.2.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action' actionpack (4.2.0) lib/abstract_controller/base.rb:198:in `process_action' actionpack (4.2.0) lib/action_controller/metal/rendering.rb:10:in `process_action' actionpack (4.2.0) lib/abstract_controller/callbacks.rb:20:in `block in process_action' activesupport (4.2.0) lib/active_support/callbacks.rb:117:in `call' activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional' activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:308:in `block (2 levels) in halting' () home/yogesh/.rvm/gems/ruby-2.2.3/bundler/gems/route_translator-f00b46885426/lib/route_translator/extensions/action_controller.rb:20:in `set_locale_from_url' activesupport (4.2.0) lib/active_support/callbacks.rb:427:in `block in make_lambda' activesupport (4.2.0) lib/active_support/callbacks.rb:307:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting' activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `_run_callbacks' activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_process_action_callbacks' activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (4.2.0) lib/abstract_controller/callbacks.rb:19:in `process_action' actionpack (4.2.0) lib/action_controller/metal/rescue.rb:29:in `process_action' actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action' activesupport (4.2.0) lib/active_support/notifications.rb:164:in `block in instrument' activesupport (4.2.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument' activesupport (4.2.0) lib/active_support/notifications.rb:164:in `instrument' actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action' actionpack (4.2.0) lib/action_controller/metal/params_wrapper.rb:250:in `process_action' activerecord (4.2.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action' actionpack (4.2.0) lib/abstract_controller/base.rb:137:in `process' actionview (4.2.0) lib/action_view/rendering.rb:30:in `process' actionpack (4.2.0) lib/action_controller/metal.rb:195:in `dispatch' actionpack (4.2.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch' actionpack (4.2.0) lib/action_controller/metal.rb:236:in `block in action' actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:73:in `dispatch' actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:42:in `serve' actionpack (4.2.0) lib/action_dispatch/journey/router.rb:43:in `block in serve' actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `serve' actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:802:in `call' xray-rails (0.1.16) lib/xray/middleware.rb:37:in `call' warden (1.2.3) lib/warden/manager.rb:35:in `block in call' warden (1.2.3) lib/warden/manager.rb:34:in `call' rack (1.6.0) lib/rack/etag.rb:24:in `call' rack (1.6.0) lib/rack/conditionalget.rb:25:in `call' rack (1.6.0) lib/rack/head.rb:13:in `call' actionpack (4.2.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call' actionpack (4.2.0) lib/action_dispatch/middleware/flash.rb:260:in `call' rack (1.6.0) lib/rack/session/abstract/id.rb:225:in `context' rack (1.6.0) lib/rack/session/abstract/id.rb:220:in `call' actionpack (4.2.0) lib/action_dispatch/middleware/cookies.rb:560:in `call' activerecord (4.2.0) lib/active_record/query_cache.rb:36:in `call' activerecord (4.2.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:647:in `call' activerecord (4.2.0) lib/active_record/migration.rb:378:in `call' actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `_run_callbacks' activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_call_callbacks' activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call' actionpack (4.2.0) lib/action_dispatch/middleware/reloader.rb:73:in `call' actionpack (4.2.0) lib/action_dispatch/middleware/remote_ip.rb:78:in `call' better_errors (2.1.1) lib/better_errors/middleware.rb:84:in `protected_app_call' better_errors (2.1.1) lib/better_errors/middleware.rb:79:in `better_errors_call' better_errors (2.1.1) lib/better_errors/middleware.rb:57:in `call' actionpack (4.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call' actionpack (4.2.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' railties (4.2.0) lib/rails/rack/logger.rb:38:in `call_app' railties (4.2.0) lib/rails/rack/logger.rb:20:in `block in call' activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `block in tagged' activesupport (4.2.0) lib/active_support/tagged_logging.rb:26:in `tagged' activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `tagged' railties (4.2.0) lib/rails/rack/logger.rb:20:in `call' quiet_assets (1.1.0) lib/quiet_assets.rb:27:in `call_with_quiet_assets' actionpack (4.2.0) lib/action_dispatch/middleware/request_id.rb:21:in `call' rack (1.6.0) lib/rack/methodoverride.rb:22:in `call' rack (1.6.0) lib/rack/runtime.rb:18:in `call' activesupport (4.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call' rack (1.6.0) lib/rack/lock.rb:17:in `call' rack-livereload (0.3.15) lib/rack/livereload.rb:23:in `_call' rack-livereload (0.3.15) lib/rack/livereload.rb:14:in `call' actionpack (4.2.0) lib/action_dispatch/middleware/static.rb:113:in `call' rack (1.6.0) lib/rack/sendfile.rb:113:in `call' railties (4.2.0) lib/rails/engine.rb:518:in `call' railties (4.2.0) lib/rails/application.rb:164:in `call' rack (1.6.0) lib/rack/lock.rb:17:in `call' rack (1.6.0) lib/rack/content_length.rb:15:in `call' rack (1.6.0) lib/rack/handler/webrick.rb:89:in `service' () home/yogesh/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service' () home/yogesh/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run' () home/yogesh/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread' logging (1.8.2) lib/logging/diagnostic_context.rb:323:in `block in create_with_logging_context' Started POST "/__better_errors/329b87011a8e5497/variables" for ::1 at 2015-11-18 16:48:21 +0530 My code in pages_controller.rb class PagesController < ApplicationController layout :determine_layout before_filter :cms_setup, :only => [:show, :sitemap, :search] before_filter :set_locale helper_method :transformed_content def parse_facebook_cookies #facebook_cookies = Koala::Facebook::OAuth.new.get_user_info_from_cookie(cookies) end def sitemap #page = Page.friendly.find("sitemap") #subnav_pages = nil end def search #page = Page.friendly.find("search") #section = #page #pages=Page.nested_set #search = Sunspot.search([Cms::Page, Cms::Asset, Product, City, Location]) do fulltext params[:terms] do fields "title_#{I18n.locale}".to_sym, "content_#{I18n.locale}".to_sym, "description_#{I18n.locale}".to_sym, "address_#{I18n.locale}".to_sym end end #results = #search.results end def cms_update page = Page.find(params[:id]) region = Cms::Region.find(params[:region_id]) asset = Cms::Asset.find(params[:asset_id]) if params[:asset_id] && !params[:asset_id].blank? # Update page if asset #asset.update_column(:content, params[:content]) if asset.content != params[:content] asset.content = params[:content] asset.save! end expire_fragment(["page_#{page.id}_region_#{region.id}_asset_#{asset.id}"]) else asset = Cms::Asset.new(:content => params[:content], :name => "#{page.title} - #{region.name}") asset.save end pra = Cms::PageRegionAsset.find_or_initialize_by(page_id: page.id, region_id: region.id, asset_id: asset.id) unless asset.nil? unless params[:content].blank? pra.save! end render text: "" end def home response.headers.delete "X-Frame-Options" #page = Page.root get_site_pages get_main_nav get_subnav #slides = Slide.visible.in_order #newsletter_signup = NewsletterSignup.new show render "show" end def show response.headers.delete "X-Frame-Options" if #page.redirect_page_id.nil? #get page template and regions #template = #page.template #regions = #template.regions if #page.product_lines.any? #product_line = #page.product_lines.first end if is_editing? #page_content = HashWithIndifferentAccess[:regions => #regions.map { |r| {:placeholder => r.placeholder, :name => r.name, :id => r.id, :assets => r.serialized_assets_for(#page)}}.flatten] else #page_content = HashWithIndifferentAccess[:regions => #regions.map { |r| {:placeholder => r.placeholder, :name => r.name, :id => r.id, :assets => r.serialized_assets_for(#page)} }.flatten] end #cms_assets = #page.page_region_assets.order(position: :asc) else unless #page.redirect_page_id.nil? #page = Page.find(#page.redirect_page_id) redirect_to #page.menu_url and return end end #instagram = Instagram.user_recent_media("2502342425320", {:count => 4}) #oauth = Koala::Facebook::OAuth.new("15239926112542342322478", "fc960a1a044492431aer35qafsd44a42c9c47990ef9b", "http://localhost:3000/") #authtoken = #oauth.get_app_access_token # generate authenticating URL #graph = Koala::Facebook::API.new("1523992323611252478|1iBWrcRsYSBsISfsyUoNSmm_opxrI") # #friends = #graph.get_connections("me", "friends") # #profile = #graph.get_object("me") #feed = #graph.get_connections("me", "feed") end def render_404 respond_to do |format| format.html { render :file => "#{Rails.root}/public/404", :layout => false, :status => :not_found } format.xml { head :not_found } format.any { head :not_found } end end private def determine_layout #page.template.file_name end def get_main_nav #main_nav_items = Page.main_nav end def get_subnav #subnav_pages = #page.subnav_pages end def get_site_pages #site_pages = Page.nested_set.visible end def cms_setup #render text: params.inspect and return if params[:path].nil? #page = Page.root else #page = Page.find_by_slug(params[:id]) if params[:id] #page ||= Page.friendly.find(params[:path]) if params[:path] #page ||= Page.root unless params[:path] #page ||= Page.find_by(slug: params[:path].match(/[^\/]+$/)[0]) if params[:path] #page ||= Page.find_by_slug("404") if #page.nil? #render text: params.inspect and return render_404 and return #page_not_found redirect_to "/404" and return end end #section = #page if #page.depth == 1 #section ||= #page.ancestors.select{|p| p.depth == 1}.first if #page.depth > 1 get_main_nav get_subnav end def transformed_content(content) frag = Nokogiri::HTML::fragment(content) #this gets us the regions content in a nodset snippets = frag.css("div.cms-snippet") dynamic_snippets = frag.xpath('descendant::div[#data-snippettype="dynamic"]') dynamic_snippets.each do |ds| object_class = ds.xpath("#data-objectclass") object_id = ds.xpath("#data-objectid").first.value snippet_partial = "/#{object_class.to_s.pluralize}/instance.html.haml" ds.content = "" #zero out the content and replace it with a rendered partial ds << (raw render :partial => snippet_partial, :locals => {:object_id => object_id}).to_s end frag end def page_params params.require(:page).permit! end def page_not_found raise ActionController::RoutingError.new('Not Found') end def set_locale unless request.path.include?("/api") #locale = params[:locale] #locale ||= cookies[:locale] #locale ||= I18n.default_locale I18n.locale = #locale if params[:locale].blank? if cookies[:locale].blank? redirect_to "/#{I18n.default_locale.to_s}#{request.path_info}" unless request.path.include?("/admin") else redirect_to "/#{cookies[:locale].to_s}#{request.path_info}" unless request.path.include?("/admin") end end cookies[:locale] = I18n.locale if request.path.include?("/admin") I18n.locale = :en end end end end I will be really thankful if someone tells me what is wrong here.
As #techdreams has commented, the error is the access token you're using, is invalid. Looking at your code seems you're getting the access token from a cookie. Just please keep in mind that an access token can become invalid if the user logs out of facebook or changes his/her password so you have always to implement a "refresh token" in your App, which basically is prompt the login dialog again to get a new token. If user has already approved your App this process will be transparent to him/her and they won't see the dialog again.
Why am I getting this TypeError? "no implicit conversion of Module into Integer"
I'm getting TypeError in CwIntegratorAccountsController#create. I'm calling a script (CwGetCompanyIntegrator.call) in the create method of the controller. CwIntegratorAccountsController: require 'apis/cw_get_company_integrator' class CwIntegratorAccountsController < ApplicationController skip_before_filter :require_company, :only => [:create,:new] # GET /cw_integrator_accounts # GET /cw_integrator_accounts.json def create unless CwIntegratorAccount.count >= 1 #cw_integrator_account = CwIntegratorAccount.new(params[:cw_integrator_account]) respond_to do |format| if #cw_integrator_account.save # Run the CW Integrator CwGetCompanyIntegrator.call format.html { redirect_to root_url, notice: 'cw_integrator success' } #format.json { render json: #cw_integrator_account, status: :created, location: #cw_integrator_account } else format.html { render action: 'new' } format.json { render json: #cw_integrator_account.errors, status: :unprocessable_entity } end end end end end It looks like it's failing when it starts the https request to the ConnectWise Server at this line: response = http.start {|h| h.request(request)} CwGetCompanyIntegrator script: #!/usr/bin/env ruby require 'net/https' require 'uri' require 'nokogiri' require 'apis/cw_apis' class CwGetCompanyIntegrator def self.call cw_integrator_account = CwIntegratorAccount.first cw_hostname = cw_integrator_account.cw_hostname company_api_url = "https://#{cw_hostname}/v4_6_release/apis/2.0/CompanyApi.asmx" uri = URI.parse(company_api_url) request = Net::HTTP::Post.new(uri.path) request.add_field('Content-Type', 'text/xml; charset=utf-8') request.add_field('SOAPAction', 'http://connectwise.com/GetCompany') request.body = CwApis.get_company_xml_request http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE response = http.start {|h| h.request(request)} xml_doc = Nokogiri::XML(response.body).remove_namespaces! company_name = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/CompanyName').text company_street_addr = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/StreetLines/string')[0].text begin company_street_addr2 = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/StreetLines/string')[1].text end company_city = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/City').text company_state = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/State').text company_zip = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/Zip').text company_country = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/Country').text company_status = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/Status').text company_phone = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/PhoneNumber').text company_fax = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/FaxNumber').text company_www = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/WebSite').text CompanyInfosController.create!(cw_company_id: cw_integrator_account.cw_company_id, company_name: company_name, company_street_addr: company_street_addr, company_street_addr2: company_street_addr2, company_city: company_city, company_state: company_state, company_zip: company_zip, company_country:company_country, company_status: company_status, company_phone: company_phone, company_fax: company_fax, company_www: company_www) end end This Class is called in the CwGetCompanyIntegrator script: #!/usr/bin/env ruby require 'builder' class CwApis def self.get_company_xml_request cw_integrator_account = CwIntegratorAccount.first integrator_company_id = cw_integrator_account.integrator_company_id integrator_login_id = cw_integrator_account.integrator_login_id integrator_password = cw_integrator_account.integrator_password xml = Builder::XmlMarkup.new(:indent=>2) xml.instruct! xml.tag!('soap:Envelope', :'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/', :xmlns => 'http://connectwise.com'){ xml.tag!('soap:Body'){ xml.tag!('GetCompany'){ xml.tag!('credentials'){ xml.CompanyId(integrator_company_id) xml.IntegratorLoginId(integrator_login_id) xml.IntegratorPassword(integrator_password) } xml.id(cw_integrator_account.cw_company_id) } } } end end Full trace: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:893:in `initialize' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:893:in `new' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:893:in `connect' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:862:in `do_start' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/http.rb:851:in `start' lib/apis/cw_get_company_integrator.rb:21:in `call' app/controllers/cw_integrator_accounts_controller.rb:54:in `block in create' actionpack (3.2.14) lib/action_controller/metal/mime_responds.rb:270:in `call' actionpack (3.2.14) lib/action_controller/metal/mime_responds.rb:270:in `retrieve_collector_from_mimes' actionpack (3.2.14) lib/action_controller/metal/mime_responds.rb:194:in `respond_to' app/controllers/cw_integrator_accounts_controller.rb:50:in `create' actionpack (3.2.14) lib/action_controller/metal/implicit_render.rb:4:in `send_action' actionpack (3.2.14) lib/abstract_controller/base.rb:167:in `process_action' actionpack (3.2.14) lib/action_controller/metal/rendering.rb:10:in `process_action' actionpack (3.2.14) lib/abstract_controller/callbacks.rb:18:in `block in process_action' activesupport (3.2.14) lib/active_support/callbacks.rb:447:in `_run__2237874046494148672__process_action__4163123032493016418__callbacks' activesupport (3.2.14) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.14) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks' activesupport (3.2.14) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.2.14) lib/abstract_controller/callbacks.rb:17:in `process_action' actionpack (3.2.14) lib/action_controller/metal/rescue.rb:29:in `process_action' actionpack (3.2.14) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action' activesupport (3.2.14) lib/active_support/notifications.rb:123:in `block in instrument' activesupport (3.2.14) lib/active_support/notifications/instrumenter.rb:20:in `instrument' activesupport (3.2.14) lib/active_support/notifications.rb:123:in `instrument' actionpack (3.2.14) lib/action_controller/metal/instrumentation.rb:29:in `process_action' actionpack (3.2.14) lib/action_controller/metal/params_wrapper.rb:207:in `process_action' activerecord (3.2.14) lib/active_record/railties/controller_runtime.rb:18:in `process_action' actionpack (3.2.14) lib/abstract_controller/base.rb:121:in `process' actionpack (3.2.14) lib/abstract_controller/rendering.rb:45:in `process' rack-mini-profiler (0.9.2) lib/mini_profiler/profiling_methods.rb:108:in `block in profile_method' actionpack (3.2.14) lib/action_controller/metal.rb:203:in `dispatch' actionpack (3.2.14) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' actionpack (3.2.14) lib/action_controller/metal.rb:246:in `block in action' actionpack (3.2.14) lib/action_dispatch/routing/route_set.rb:73:in `call' actionpack (3.2.14) lib/action_dispatch/routing/route_set.rb:73:in `dispatch' actionpack (3.2.14) lib/action_dispatch/routing/route_set.rb:36:in `call' journey (1.0.4) lib/journey/router.rb:68:in `block in call' journey (1.0.4) lib/journey/router.rb:56:in `each' journey (1.0.4) lib/journey/router.rb:56:in `call' actionpack (3.2.14) lib/action_dispatch/routing/route_set.rb:608:in `call' rack-webconsole-pry (0.1.9) lib/rack/webconsole/assets.rb:26:in `call' rack-webconsole-pry (0.1.9) lib/rack/webconsole.rb:79:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' rack (1.4.5) lib/rack/etag.rb:23:in `call' rack (1.4.5) lib/rack/conditionalget.rb:35:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/head.rb:14:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/params_parser.rb:21:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/flash.rb:242:in `call' rack (1.4.5) lib/rack/session/abstract/id.rb:210:in `context' rack (1.4.5) lib/rack/session/abstract/id.rb:205:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/cookies.rb:341:in `call' activerecord (3.2.14) lib/active_record/query_cache.rb:64:in `call' activerecord (3.2.14) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' activesupport (3.2.14) lib/active_support/callbacks.rb:405:in `_run__2942276951910103516__call__2669772965393719582__callbacks' activesupport (3.2.14) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.14) lib/active_support/callbacks.rb:385:in `_run_call_callbacks' activesupport (3.2.14) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.2.14) lib/action_dispatch/middleware/callbacks.rb:27:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/reloader.rb:65:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/remote_ip.rb:31:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' railties (3.2.14) lib/rails/rack/logger.rb:32:in `call_app' railties (3.2.14) lib/rails/rack/logger.rb:16:in `block in call' activesupport (3.2.14) lib/active_support/tagged_logging.rb:22:in `tagged' railties (3.2.14) lib/rails/rack/logger.rb:16:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/request_id.rb:22:in `call' rack (1.4.5) lib/rack/methodoverride.rb:21:in `call' rack (1.4.5) lib/rack/runtime.rb:17:in `call' activesupport (3.2.14) lib/active_support/cache/strategy/local_cache.rb:72:in `call' rack (1.4.5) lib/rack/lock.rb:15:in `call' actionpack (3.2.14) lib/action_dispatch/middleware/static.rb:63:in `call' rack-mini-profiler (0.9.2) lib/mini_profiler/profiler.rb:300:in `call' railties (3.2.14) lib/rails/engine.rb:484:in `call' railties (3.2.14) lib/rails/application.rb:231:in `call' rack (1.4.5) lib/rack/content_length.rb:14:in `call' railties (3.2.14) lib/rails/rack/log_tailer.rb:17:in `call' rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread' This works in a plain ruby script, is it an environment thing? Working Ruby Scripts: CompanyApis class: require 'builder' class CompanyApis def self.get_company cw_company_id = 21920 integrator_company_id = 'COMPANY_ID' integrator_login_id = 'INTERGRATOR_LOGIN' integrator_password = 'INTERGRATOR_PW' xml = Builder::XmlMarkup.new(:indent=>2) xml.instruct! xml.tag!('soap:Envelope', :'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/', :xmlns => 'http://connectwise.com'){ xml.tag!('soap:Body'){ xml.tag!('GetCompany'){ xml.tag!('credentials'){ xml.CompanyId(integrator_company_id) xml.IntegratorLoginId(integrator_login_id) xml.IntegratorPassword(integrator_password) } xml.id(cw_company_id) } } } end end CwIntegrator class: require 'net/https' require 'uri' require 'nokogiri' require './company_api' class CwIntegrator def self.call cw_company_id = 21920 cw_hostname = 'cw.host.com' companyapi_url = "https://#{cw_hostname}/v4_6_release/apis/2.0/CompanyApi.asmx" uri = URI.parse(companyapi_url) # Use for proxying to Kali #proxy_addr = '172.16.1.149' #proxy_port = 8080 request = Net::HTTP::Post.new(uri.path) request.add_field('Content-Type', 'text/xml; charset=utf-8') request.add_field('SOAPAction', 'http://connectwise.com/GetCompany') request.body = CompanyApis.get_company http = Net::HTTP.new(uri.host, uri.port) # Use for proxying to Kali #http = Net::HTTP.new(uri.host, uri.port, proxy_addr, proxy_port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE response = http.start {|h| h.request(request)} company_info = [] xml_doc = Nokogiri::XML(response.body).remove_namespaces! company_name = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/CompanyName').text company_street_addr = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/StreetLines/string')[0].text begin company_street_addr2 = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/StreetLines/string')[1].text end company_city = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/City').text company_state = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/State').text company_zip = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/Zip').text company_country = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/DefaultAddress/Country').text company_status = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/Status').text company_phone = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/PhoneNumber').text company_fax = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/FaxNumber').text company_www = xml_doc.xpath('//Envelope/Body/GetCompanyResponse/GetCompanyResult/WebSite').text company_info += [company_name: company_name, cw_company_id: cw_company_id, company_name: company_name, company_street_addr: company_street_addr, company_street_addr2: company_street_addr2, company_city: company_city, company_state: company_state, company_zip: company_zip, company_country:company_country,company_status: company_status, company_phone: company_phone, company_fax: company_fax, company_www: company_www] puts(company_info) end end CwIntegrator.call
Rails is jealous and greedy to some methods like call etc. Probably simple renaming of the target method from call to neutral my_call would resolve the problem. I bet there rails pretend to gain full power on call method, overriding it after your class is initialized.
Country-select throws ArgumentError
I need a country selector. Rails' site writes that they removed their country selector helper so as not to offend people. I installed the country-select gem. It installed fine, but when I call it like so: f.country_select("country") or like so: f.country_select(:country) where f is my FormBuilder object, it throws an ArgumentError wrong number of arguments(4 for 0) The docs say it only requires one argument. What gives this? And what does 4 for 0 mean? EDIT: Here's the Full error stack: country-select (1.1.1) lib/country-select.rb:7:in `initialize' country-select (1.1.1) lib/country-select.rb:7:in `new' country-select (1.1.1) lib/country-select.rb:7:in `country_select' country-select (1.1.1) lib/country-select.rb:93:in `country_select' app/views/admin_area/new_user.html.erb:15:in `block in _app_views_admin_area_new_user_html_erb__169470495_30991140' actionpack (4.0.1) lib/action_view/helpers/capture_helper.rb:38:in `block in capture' actionpack (4.0.1) lib/action_view/helpers/capture_helper.rb:200:in `with_output_buffer' actionpack (4.0.1) lib/action_view/helpers/capture_helper.rb:38:in `capture' actionpack (4.0.1) lib/action_view/helpers/form_helper.rb:435:in `form_for' app/views/admin_area/new_user.html.erb:2:in `_app_views_admin_area_new_user_html_erb__169470495_30991140' actionpack (4.0.1) lib/action_view/template.rb:143:in `block in render' activesupport (4.0.1) lib/active_support/notifications.rb:161:in `instrument' actionpack (4.0.1) lib/action_view/template.rb:141:in `render' actionpack (4.0.1) lib/action_view/renderer/template_renderer.rb:49:in `block (2 levels) in render_template' actionpack (4.0.1) lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument' activesupport (4.0.1) lib/active_support/notifications.rb:159:in `block in instrument' activesupport (4.0.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument' activesupport (4.0.1) lib/active_support/notifications.rb:159:in `instrument' actionpack (4.0.1) lib/action_view/renderer/abstract_renderer.rb:38:in `instrument' actionpack (4.0.1) lib/action_view/renderer/template_renderer.rb:48:in `block in render_template' actionpack (4.0.1) lib/action_view/renderer/template_renderer.rb:56:in `render_with_layout' actionpack (4.0.1) lib/action_view/renderer/template_renderer.rb:47:in `render_template' actionpack (4.0.1) lib/action_view/renderer/template_renderer.rb:17:in `render' actionpack (4.0.1) lib/action_view/renderer/renderer.rb:42:in `render_template' actionpack (4.0.1) lib/action_view/renderer/renderer.rb:23:in `render' actionpack (4.0.1) lib/abstract_controller/rendering.rb:127:in `_render_template' actionpack (4.0.1) lib/action_controller/metal/streaming.rb:219:in `_render_template' actionpack (4.0.1) lib/abstract_controller/rendering.rb:120:in `render_to_body' actionpack (4.0.1) lib/action_controller/metal/rendering.rb:33:in `render_to_body' actionpack (4.0.1) lib/action_controller/metal/renderers.rb:26:in `render_to_body' actionpack (4.0.1) lib/abstract_controller/rendering.rb:97:in `render' actionpack (4.0.1) lib/action_controller/metal/rendering.rb:16:in `render' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:41:in `block (2 levels) in render' activesupport (4.0.1) lib/active_support/core_ext/benchmark.rb:12:in `block in ms' C:/Ruby193/lib/ruby/1.9.1/benchmark.rb:295:in `realtime' activesupport (4.0.1) lib/active_support/core_ext/benchmark.rb:12:in `ms' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:41:in `block in render' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:84:in `cleanup_view_runtime' activerecord (4.0.1) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:40:in `render' actionpack (4.0.1) lib/action_controller/metal/implicit_render.rb:10:in `default_render' actionpack (4.0.1) lib/action_controller/metal/implicit_render.rb:5:in `send_action' actionpack (4.0.1) lib/abstract_controller/base.rb:189:in `process_action' actionpack (4.0.1) lib/action_controller/metal/rendering.rb:10:in `process_action' actionpack (4.0.1) lib/abstract_controller/callbacks.rb:18:in `block in process_action' activesupport (4.0.1) lib/active_support/callbacks.rb:403:in `_run__836640127__process_action__callbacks' activesupport (4.0.1) lib/active_support/callbacks.rb:80:in `run_callbacks' actionpack (4.0.1) lib/abstract_controller/callbacks.rb:17:in `process_action' actionpack (4.0.1) lib/action_controller/metal/rescue.rb:29:in `process_action' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action' activesupport (4.0.1) lib/active_support/notifications.rb:159:in `block in instrument' activesupport (4.0.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument' activesupport (4.0.1) lib/active_support/notifications.rb:159:in `instrument' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:30:in `process_action' actionpack (4.0.1) lib/action_controller/metal/params_wrapper.rb:245:in `process_action' activerecord (4.0.1) lib/active_record/railties/controller_runtime.rb:18:in `process_action' actionpack (4.0.1) lib/abstract_controller/base.rb:136:in `process' actionpack (4.0.1) lib/abstract_controller/rendering.rb:44:in `process' actionpack (4.0.1) lib/action_controller/metal.rb:195:in `dispatch' actionpack (4.0.1) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch' actionpack (4.0.1) lib/action_controller/metal.rb:231:in `block in action' actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:80:in `call' actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:80:in `dispatch' actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:48:in `call' actionpack (4.0.1) lib/action_dispatch/journey/router.rb:71:in `block in call' actionpack (4.0.1) lib/action_dispatch/journey/router.rb:59:in `each' actionpack (4.0.1) lib/action_dispatch/journey/router.rb:59:in `call' actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:680:in `call' rack (1.5.2) lib/rack/etag.rb:23:in `call' rack (1.5.2) lib/rack/conditionalget.rb:25:in `call' rack (1.5.2) lib/rack/head.rb:11:in `call' actionpack (4.0.1) lib/action_dispatch/middleware/params_parser.rb:27:in `call' actionpack (4.0.1) lib/action_dispatch/middleware/flash.rb:241:in `call' rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context' rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call' actionpack (4.0.1) lib/action_dispatch/middleware/cookies.rb:486:in `call' activerecord (4.0.1) lib/active_record/query_cache.rb:36:in `call' activerecord (4.0.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call' activerecord (4.0.1) lib/active_record/migration.rb:369:in `call' actionpack (4.0.1) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' activesupport (4.0.1) lib/active_support/callbacks.rb:373:in `_run__1017747328__call__callbacks' activesupport (4.0.1) lib/active_support/callbacks.rb:80:in `run_callbacks' actionpack (4.0.1) lib/action_dispatch/middleware/callbacks.rb:27:in `call' actionpack (4.0.1) lib/action_dispatch/middleware/reloader.rb:64:in `call' actionpack (4.0.1) lib/action_dispatch/middleware/remote_ip.rb:76:in `call' actionpack (4.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call' actionpack (4.0.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' railties (4.0.1) lib/rails/rack/logger.rb:38:in `call_app' railties (4.0.1) lib/rails/rack/logger.rb:20:in `block in call' activesupport (4.0.1) lib/active_support/tagged_logging.rb:67:in `block in tagged' activesupport (4.0.1) lib/active_support/tagged_logging.rb:25:in `tagged' activesupport (4.0.1) lib/active_support/tagged_logging.rb:67:in `tagged' railties (4.0.1) lib/rails/rack/logger.rb:20:in `call' actionpack (4.0.1) lib/action_dispatch/middleware/request_id.rb:21:in `call' rack (1.5.2) lib/rack/methodoverride.rb:21:in `call' rack (1.5.2) lib/rack/runtime.rb:17:in `call' activesupport (4.0.1) lib/active_support/cache/strategy/local_cache.rb:83:in `call' rack (1.5.2) lib/rack/lock.rb:17:in `call' actionpack (4.0.1) lib/action_dispatch/middleware/static.rb:64:in `call' rack (1.5.2) lib/rack/sendfile.rb:112:in `call' railties (4.0.1) lib/rails/engine.rb:511:in `call' railties (4.0.1) lib/rails/application.rb:97:in `call' rack (1.5.2) lib/rack/lock.rb:17:in `call' rack (1.5.2) lib/rack/content_length.rb:14:in `call' rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service' C:/Ruby193/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service' C:/Ruby193/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' C:/Ruby193/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread' Here's where I'm calling it: <div id="new_user_form"> <%= form_for(:user, :url => {:action =>'create_user'}) do |f| %> <table> <tr><td><%= f.label(:username, 'Enter a Username:') %> </td> <td><%= f.text_field(:username) %></td> </tr> <tr><td> <%= f.label(:password, 'Enter a Password:') %></td> <td><%= f.password_field(:password) %></td></tr> <tr><td><%= f.label(:confirm, 'Confirm your password:') %></td> <td><%= f.password_field(:confirm) %></td></tr> <tr><td> <%= f.label(:email, 'Enter your e-mail address:') %></td> <td> <%= f.text_field(:email) %></td></tr> <tr><td><%= f.label(:username, 'City:') %></td> <td><%= f.text_field(:city) %></td></tr> <tr><td><%= f.label(:country, 'Country:') %></td> <td><%= f.country_select(:country) %></td></tr> <tr> <td> <%= f.label(:firstname, 'First Name:') %></td> <td> <%= f.text_field(:firstname) %></td></tr> <tr><td><%= f.label(:lastname, 'Last Name:') %></td> <td><%= f.text_field(:lastname) %></td></tr> <tr><td><%= f.submit('Submit') %></td><td></td></tr> </table> <% end %> </div> (It's still a work in process, btw) Here's the country-select.rb (not my code) # CountrySelect module ActionView module Helpers module FormOptionsHelper # Return select and option tags for the given object and method, using country_options_for_select to generate the list of option tags. def country_select(object, method, priority_countries = nil, options = {}, html_options = {}) InstanceTag.new(object, method, self, options.delete(:object)).to_country_select_tag(priority_countries, options, html_options) end # Returns a string of option tags for pretty much any country in the world. Supply a country name as +selected+ to # have it marked as the selected option tag. You can also supply an array of countries as +priority_countries+, so # that they will be listed above the rest of the (long) list. # # NOTE: Only the option tags are returned, you have to wrap this call in a regular HTML select tag. def country_options_for_select(selected = nil, priority_countries = nil) country_options = "" if priority_countries if (unlisted = priority_countries - COUNTRIES).any? raise RuntimeError.new("Supplied priority countries are not in the main list: #{unlisted}") end country_options += options_for_select(priority_countries, selected) country_options += "<option value=\"\" disabled=\"disabled\">-------------</option>\n" # prevents selected from being included twice in the HTML which causes # some browsers to select the second selected option (not priority) # which makes it harder to select an alternative priority country selected = nil if priority_countries.include?(selected) end country_options = country_options.html_safe if country_options.respond_to?(:html_safe) return country_options + options_for_select(COUNTRIES, selected) end # All the countries included in the country_options output. COUNTRIES = ["Afghanistan", "Aland Islands", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica", "Antigua And Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia, Plurinational State of", "Bonaire, Sint Eustatius and Saba", "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory", "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burundi", "Cambodia", "Cameroon", "Canada", "Cape Verde", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo", "Congo, the Democratic Republic of the", "Cook Islands", "Costa Rica", "Cote d'Ivoire", "Croatia", "Cuba", "Cyprus", "Czech Republic", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Falkland Islands (Malvinas)", "Faroe Islands", "Fiji", "Finland", "France", "French Guiana", "French Polynesia", "French Southern Territories", "Gabon", "Gambia", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Heard Island and McDonald Islands", "Holy See (Vatican City State)", "Honduras", "Hong Kong", "Hungary", "Iceland", "India", "Indonesia", "Iran, Islamic Republic of", "Iraq", "Ireland", "Isle of Man", "Israel", "Italy", "Jamaica", "Japan", "Jersey", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Korea, Democratic People's Republic of", "Korea, Republic of", "Kuwait", "Kyrgyzstan", "Lao People's Democratic Republic", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macao", "Macedonia, The Former Yugoslav Republic Of", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia, Federated States of", "Moldova, Republic of", "Monaco", "Mongolia", "Montenegro", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia", "Nauru", "Nepal", "Netherlands", "New Caledonia", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "Northern Mariana Islands", "Norway", "Oman", "Pakistan", "Palau", "Palestinian Territory, Occupied", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn", "Poland", "Portugal", "Puerto Rico", "Qatar", "Reunion", "Romania", "Russian Federation", "Rwanda", "Saint Barthelemy", "Saint Helena, Ascension and Tristan da Cunha", "Saint Kitts and Nevis", "Saint Lucia", "Saint Martin (French Part)", "Saint Pierre and Miquelon", "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore", "Sint Maarten (Dutch Part)", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Sudan", "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden", "Switzerland", "Syrian Arab Republic", "Taiwan, Province of China", "Tajikistan", "Tanzania, United Republic of", "Thailand", "Timor-Leste", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela, Bolivarian Republic of", "Viet Nam", "Virgin Islands, British", "Virgin Islands, U.S.", "Wallis and Futuna", "Western Sahara", "Yemen", "Zambia", "Zimbabwe"] unless const_defined?("COUNTRIES") end class InstanceTag def to_country_select_tag(priority_countries, options, html_options) html_options = html_options.stringify_keys add_default_name_and_id(html_options) value = value(object) content_tag("select", add_options( country_options_for_select(value, priority_countries), options, value ), html_options ) end end class FormBuilder def country_select(method, priority_countries = nil, options = {}, html_options = {}) #template.country_select(#object_name, method, priority_countries, options.merge(:object => #object), html_options) end end end end
Check the version of the country_select gem. It appears that it was updated fairly recently to be compliant with changes introduced in Rails 4.x. You'll want v1.1.1 or above.
Unfortunately documentation on this is somewhat sparse. When your country_select is inside a form (i.e. you are using f.country_select...) you do not need to supply the object since you already have form_for(object). I am successfully using the following syntax with Rails 3.2.17 and country_select 1.1.3: form_for(myobject) do |f| ... f.country_select "country", ["Australia", "New Zealand"], {}, {class: "form-control", id: "country"} ... end "country" is the attribute of the myobject, Australia and New Zealand are priority countries, the empty {} is options and the rest is html_options.
try changing your view istead of f.country_select('country') do country_select(:user, :country)
I had to install another gem to resolve the same error in Rails version 4.2.0: wrong number of arguments(4 for 0) The gem is specified as: gem 'country_select', github: 'stefanpenner/country_select' in your Gemfile, then run bundle install and restart the server. I found this solution here.