0

I've been working with the shoppe gem, and I'm currently completely stumped by an error I'm getting when I'm opening up the orders page of the admin panel.

I'm using version 1.0.7 because product variants broke on the subsequent ones. Everything was working completely fine until I merged with a different branch in my repo, and now when I try to access the orders page of the admin panel this happens:

ActionView::Template::Error (undefined method `entry_name' for #<ActiveRecord::Relation []>):
     6:     = link_to t('shoppe.orders.search_orders'), '#', :class => 'button', :rel => 'searchOrders'
     7:   %h2.orders
     8:     = t('shoppe.orders.orders')
     9:     %span= page_entries_info @orders
    10:
    11: = render 'search_form'
    12:
  activerecord (4.2.4) lib/active_record/relation/delegation.rb:136:in `method_missing'
  activerecord (4.2.4) lib/active_record/relation/delegation.rb:99:in `method_missing'
  kaminari (0.16.3) lib/kaminari/helpers/action_view_extension.rb:92:in `page_entries_info'
  shoppe (1.0.7) app/views/shoppe/orders/index.html.haml:9:in `block in ___sers_aur______rvm_gems_ruby_______gems_shoppe_______app_views_shoppe_orders_index_html_haml__4424402014120534252_70189058436720'
  haml (4.0.7) lib/haml/helpers.rb:368:in `call'
  haml (4.0.7) lib/haml/helpers.rb:368:in `block in capture_haml'
  haml (4.0.7) lib/haml/helpers.rb:608:in `with_haml_buffer'
  haml (4.0.7) lib/haml/helpers.rb:364:in `capture_haml'
  haml (4.0.7) lib/haml/helpers/xss_mods.rb:61:in `capture_haml_with_haml_xss'
  haml (4.0.7) lib/haml/helpers/action_view_mods.rb:45:in `capture_with_haml'
  actionview (4.2.4) lib/action_view/helpers/capture_helper.rb:152:in `content_for'
  shoppe (1.0.7) app/views/shoppe/orders/index.html.haml:3:in `___sers_aur______rvm_gems_ruby_______gems_shoppe_______app_views_shoppe_orders_index_html_haml__4424402014120534252_70189058436720'
  actionview (4.2.4) lib/action_view/template.rb:145:in `block in render'
  activesupport (4.2.4) lib/active_support/notifications.rb:166:in `instrument'
  actionview (4.2.4) lib/action_view/template.rb:333:in `instrument'
  actionview (4.2.4) lib/action_view/template.rb:143:in `render'
  actionview (4.2.4) lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template'
  actionview (4.2.4) lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
  activesupport (4.2.4) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.4) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.4) lib/active_support/notifications.rb:164:in `instrument'
  actionview (4.2.4) lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
  actionview (4.2.4) lib/action_view/renderer/template_renderer.rb:53:in `block in render_template'
  actionview (4.2.4) lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout'
  actionview (4.2.4) lib/action_view/renderer/template_renderer.rb:52:in `render_template'
  actionview (4.2.4) lib/action_view/renderer/template_renderer.rb:14:in `render'
  actionview (4.2.4) lib/action_view/renderer/renderer.rb:42:in `render_template'
  actionview (4.2.4) lib/action_view/renderer/renderer.rb:23:in `render'
  actionview (4.2.4) lib/action_view/rendering.rb:100:in `_render_template'
  actionpack (4.2.4) lib/action_controller/metal/streaming.rb:217:in `_render_template'
  actionview (4.2.4) lib/action_view/rendering.rb:83:in `render_to_body'
  actionpack (4.2.4) lib/action_controller/metal/rendering.rb:32:in `render_to_body'
  actionpack (4.2.4) lib/action_controller/metal/renderers.rb:37:in `render_to_body'
  actionpack (4.2.4) lib/abstract_controller/rendering.rb:25:in `render'
  actionpack (4.2.4) lib/action_controller/metal/rendering.rb:16:in `render'
  actionpack (4.2.4) lib/action_controller/metal/instrumentation.rb:44:in `block (2 levels) in render'
  activesupport (4.2.4) lib/active_support/core_ext/benchmark.rb:12:in `block in ms'
  /Users/aur2103/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/benchmark.rb:303:in `realtime'
  activesupport (4.2.4) lib/active_support/core_ext/benchmark.rb:12:in `ms'
  actionpack (4.2.4) lib/action_controller/metal/instrumentation.rb:44:in `block in render'
  actionpack (4.2.4) lib/action_controller/metal/instrumentation.rb:87:in `cleanup_view_runtime'
  activerecord (4.2.4) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime'
  actionpack (4.2.4) lib/action_controller/metal/instrumentation.rb:43:in `render'
  actionpack (4.2.4) lib/action_controller/metal/implicit_render.rb:10:in `default_render'
  actionpack (4.2.4) lib/action_controller/metal/implicit_render.rb:5:in `send_action'
  actionpack (4.2.4) lib/abstract_controller/base.rb:198:in `process_action'
  actionpack (4.2.4) lib/action_controller/metal/rendering.rb:10:in `process_action'
  actionpack (4.2.4) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  activesupport (4.2.4) lib/active_support/callbacks.rb:117:in `call'
  activesupport (4.2.4) lib/active_support/callbacks.rb:117:in `call'
  activesupport (4.2.4) lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
  activesupport (4.2.4) lib/active_support/callbacks.rb:505:in `call'
  activesupport (4.2.4) lib/active_support/callbacks.rb:505:in `call'
  activesupport (4.2.4) lib/active_support/callbacks.rb:92:in `__run_callbacks__'
  activesupport (4.2.4) lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
  activesupport (4.2.4) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.4) lib/abstract_controller/callbacks.rb:19:in `process_action'
  actionpack (4.2.4) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (4.2.4) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
  activesupport (4.2.4) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.4) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.4) lib/active_support/notifications.rb:164:in `instrument'
  actionpack (4.2.4) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  actionpack (4.2.4) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
  activerecord (4.2.4) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  actionpack (4.2.4) lib/abstract_controller/base.rb:137:in `process'
  actionview (4.2.4) lib/action_view/rendering.rb:30:in `process'
  actionpack (4.2.4) lib/action_controller/metal.rb:196:in `dispatch'
  actionpack (4.2.4) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  actionpack (4.2.4) lib/action_controller/metal.rb:237:in `block in action'
  actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:76:in `call'
  actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:76:in `dispatch'
  actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:45:in `serve'
  actionpack (4.2.4) lib/action_dispatch/journey/router.rb:43:in `block in serve'
  actionpack (4.2.4) lib/action_dispatch/journey/router.rb:30:in `each'
  actionpack (4.2.4) lib/action_dispatch/journey/router.rb:30:in `serve'
  actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:821:in `call'
  railties (4.2.4) lib/rails/engine.rb:518:in `call'
  railties (4.2.4) lib/rails/railtie.rb:194:in `public_send'
  railties (4.2.4) lib/rails/railtie.rb:194:in `method_missing'
  actionpack (4.2.4) lib/action_dispatch/routing/mapper.rb:51:in `serve'
  actionpack (4.2.4) lib/action_dispatch/journey/router.rb:43:in `block in serve'
  actionpack (4.2.4) lib/action_dispatch/journey/router.rb:30:in `each'
  actionpack (4.2.4) lib/action_dispatch/journey/router.rb:30:in `serve'
  actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:821:in `call'
  shoppe (1.0.7) lib/shoppe/settings_loader.rb:10:in `call'
  nifty-attachments (1.0.4) lib/nifty/attachments/middleware.rb:23: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 `catch'
  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:25:in `call'
  rack (1.6.4) lib/rack/head.rb:13:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.2.4) 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.4) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (4.2.4) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.2.4) lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call'
  activerecord (4.2.4) lib/active_record/migration.rb:377:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.2.4) lib/active_support/callbacks.rb:88:in `__run_callbacks__'
  activesupport (4.2.4) lib/active_support/callbacks.rb:778:in `_run_call_callbacks'
  activesupport (4.2.4) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.4) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/reloader.rb:73:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.4) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.4) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.4) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.2.4) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.2.4) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.2.4) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.2.4) 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.4) 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.4) lib/action_dispatch/middleware/static.rb:116:in `call'
  rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
  railties (4.2.4) lib/rails/engine.rb:518:in `call'
  railties (4.2.4) lib/rails/application.rb:165:in `call'
  rack (1.6.4) lib/rack/lock.rb:17:in `call'
  rack (1.6.4) lib/rack/content_length.rb:15:in `call'
  rack (1.6.4) lib/rack/handler/webrick.rb:88:in `service'
  /Users/aur2103/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
  /Users/aur2103/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
  /Users/aur2103/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'

I know that this is happening in the page_entries_info method in kaminari. This one, specifically the second line within the method:

def page_entries_info(collection, options = {})
  entry_name = options[:entry_name] || collection.entry_name
  entry_name = entry_name.pluralize unless collection.total_count == 1

  if collection.total_pages < 2
    t('helpers.page_entries_info.one_page.display_entries', :entry_name => entry_name, :count => collection.total_count)
  else
    first = collection.offset_value + 1
    last = collection.last_page? ? collection.total_count : collection.offset_value + collection.limit_value
    t('helpers.page_entries_info.more_pages.display_entries', :entry_name => entry_name, :first => first, :last => last, :total => collection.total_count)
  end.html_safe
end

The strange thing is, I've put in some print statements in both the functioning version and the broken version, and in BOTH of them options[:entry_name] is nil and collection.inspect prints out #<ActiveRecord::Relation []>. However, only the newly merged version throws the error. Why does #<ActiveRecord::Relation []> not have this method in only one of the branches? What could be causing this?

2 Answers2

1

Are you using will_paginate or bootstrap-will_paginate ?

Please see here: https://github.com/tryshoppe/shoppe/issues/189

I will also suggest the following:

1. Kill your rails server
2. type "spring stop"
3. bundle/restart rails

I had this same issue with entry_name without using will_paginate so the second fix worked for me.

sump
  • 506
  • 2
  • 15
1

Explicitly declaring entry_name in the line that calls page_entries_info is what solved it for me.

<%= page_entries_info @orders, entry_name: "order" =>

See the solution here.

calyxofheld
  • 1,538
  • 3
  • 24
  • 62