trailblazer / cells

View components for Ruby and Rails.
https://trailblazer.to/2.1/docs/cells.html
3.06k stars 235 forks source link

Use gem table-for in cell #442

Closed havran closed 7 years ago

havran commented 7 years ago

Thanks for great gem. I like idea of cells and i now try use them on my refactored rails code.

I'm trying use table-for gem inside cell slim template but without success. I try include TableFor module and TableFor::ViewAdditions::ClassMethods but without success.

I try use this code (because table-for internaly use erb template):

module Customers
  module Statistics
    class DataCell < Cell::ViewModel
      include Cell::Slim
      include Cell::Erb
      include TableFor
      include TableFor::ViewAdditions::ClassMethods

      property :data

      def show
        render
      end
    end
  end
end

I get error:

ArgumentError - wrong number of arguments (2 for 0..1):
  with_template (0.2.0) lib/with_template/base.rb:51:in `render_template'
  table-for (3.6.0) lib/table_for/view_additions.rb:5:in `table_for'
  app/cells/customers/statistics/data/show.slim:3:in `block in singleton class'
  app/cells/customers/statistics/data/show.slim:65534:in `singleton class'
  app/cells/customers/statistics/data/show.slim:65532:in `__tilt_70245338366960'
  tilt (2.0.4) lib/tilt/template.rb:167:in `evaluate'
  tilt (2.0.4) lib/tilt/template.rb:102:in `render'
  cells (4.1.4) lib/cell/view_model.rb:104:in `render_template'
  cells-erb (0.0.9) lib/cell/erb/template.rb:10:in `render_template'
  cells-slim (0.0.5) lib/cell/slim.rb:8:in `render_template'
  cells (4.1.4) lib/cell/view_model.rb:96:in `render_to_string'
  cells (4.1.4) lib/cell/layout.rb:23:in `render_to_string'
  cells (4.1.4) lib/cell/view_model.rb:90:in `render'
  app/cells/customers/statistics/data_cell.rb:11:in `show'
  cells (4.1.4) lib/cell/view_model.rb:100:in `render_state'
  cells (4.1.4) lib/cell/caching.rb:47:in `render_state'
  cells (4.1.4) lib/cell/view_model.rb:78:in `call'
  cells-rails (0.0.6) lib/cell/rails.rb:54:in `call'
  cells (4.1.4) lib/cell/view_model.rb:111:in `to_s'
  temple (0.7.7) lib/temple/utils.rb:88:in `indent_dynamic'
  app/views/customers/partials/_show_statistics.html.slim:33:in `_app_views_customers_partials__show_statistics_html_slim__3961570437733680159_70245352198320'
  actionview (4.2.6) lib/action_view/template.rb:145:in `block in render'
  activesupport (4.2.6) lib/active_support/notifications.rb:166:in `instrument'
  actionview (4.2.6) lib/action_view/template.rb:333:in `instrument'
  actionview (4.2.6) lib/action_view/template.rb:143:in `render'
  rack-mini-profiler (0.10.1) lib/mini_profiler/profiling_methods.rb:102:in `block in profile_method'
  actionview (4.2.6) lib/action_view/renderer/partial_renderer.rb:339:in `render_partial'
  actionview (4.2.6) lib/action_view/renderer/partial_renderer.rb:310:in `block in render'
  actionview (4.2.6) lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
  activesupport (4.2.6) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.6) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.6) lib/active_support/notifications.rb:164:in `instrument'
  actionview (4.2.6) lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
  actionview (4.2.6) lib/action_view/renderer/partial_renderer.rb:309:in `render'
  actionview (4.2.6) lib/action_view/renderer/renderer.rb:51:in `render_partial'
  actionview (4.2.6) lib/action_view/renderer/renderer.rb:25:in `render'
  actionview (4.2.6) lib/action_view/helpers/rendering_helper.rb:32:in `render'
  app/views/_layouts/two_column/_layout.html.slim:7:in `_app_views__layouts_two_column__layout_html_slim___3869727648577242358_70245354211980'
  actionview (4.2.6) lib/action_view/template.rb:145:in `block in render'
  activesupport (4.2.6) lib/active_support/notifications.rb:166:in `instrument'
  actionview (4.2.6) lib/action_view/template.rb:333:in `instrument'
  actionview (4.2.6) lib/action_view/template.rb:143:in `render'
  rack-mini-profiler (0.10.1) lib/mini_profiler/profiling_methods.rb:102:in `block in profile_method'
  actionview (4.2.6) lib/action_view/renderer/partial_renderer.rb:339:in `render_partial'
  actionview (4.2.6) lib/action_view/renderer/partial_renderer.rb:310:in `block in render'
  actionview (4.2.6) lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
  activesupport (4.2.6) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.6) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.6) lib/active_support/notifications.rb:164:in `instrument'
  actionview (4.2.6) lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
  actionview (4.2.6) lib/action_view/renderer/partial_renderer.rb:309:in `render'
  actionview (4.2.6) lib/action_view/renderer/renderer.rb:51:in `render_partial'
  actionview (4.2.6) lib/action_view/renderer/renderer.rb:25:in `render'
  actionview (4.2.6) lib/action_view/helpers/rendering_helper.rb:32:in `render'
  app/views/customers/show_statistics.html.slim:11:in `_app_views_customers_show_statistics_html_slim___2612966639410899022_70245357304320'
  actionview (4.2.6) lib/action_view/template.rb:145:in `block in render'
  activesupport (4.2.6) lib/active_support/notifications.rb:166:in `instrument'
  actionview (4.2.6) lib/action_view/template.rb:333:in `instrument'
  actionview (4.2.6) lib/action_view/template.rb:143:in `render'
  rack-mini-profiler (0.10.1) lib/mini_profiler/profiling_methods.rb:102:in `block in profile_method'
  actionview (4.2.6) lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template'
  actionview (4.2.6) lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
  activesupport (4.2.6) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.6) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.6) lib/active_support/notifications.rb:164:in `instrument'
  actionview (4.2.6) lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
  actionview (4.2.6) lib/action_view/renderer/template_renderer.rb:53:in `block in render_template'
  actionview (4.2.6) lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout'
  actionview (4.2.6) lib/action_view/renderer/template_renderer.rb:52:in `render_template'
  actionview (4.2.6) lib/action_view/renderer/template_renderer.rb:14:in `render'
  actionview (4.2.6) lib/action_view/renderer/renderer.rb:46:in `render_template'
  actionview (4.2.6) lib/action_view/renderer/renderer.rb:27:in `render'
  actionview (4.2.6) lib/action_view/rendering.rb:100:in `_render_template'
  actionpack (4.2.6) lib/action_controller/metal/streaming.rb:217:in `_render_template'
  actionview (4.2.6) lib/action_view/rendering.rb:83:in `render_to_body'
  actionpack (4.2.6) lib/action_controller/metal/rendering.rb:32:in `render_to_body'
  actionpack (4.2.6) lib/action_controller/metal/renderers.rb:37:in `render_to_body'
  actionpack (4.2.6) lib/abstract_controller/rendering.rb:25:in `render'
  actionpack (4.2.6) lib/action_controller/metal/rendering.rb:16:in `render'
  actionpack (4.2.6) lib/action_controller/metal/instrumentation.rb:44:in `block (2 levels) in render'
  activesupport (4.2.6) lib/active_support/core_ext/benchmark.rb:12:in `block in ms'
  /opt/rbenv/versions/2.2.4/lib/ruby/2.2.0/benchmark.rb:303:in `realtime'
  activesupport (4.2.6) lib/active_support/core_ext/benchmark.rb:12:in `ms'
  actionpack (4.2.6) lib/action_controller/metal/instrumentation.rb:44:in `block in render'
  actionpack (4.2.6) lib/action_controller/metal/instrumentation.rb:87:in `cleanup_view_runtime'
  activerecord (4.2.6) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime'
  actionpack (4.2.6) lib/action_controller/metal/instrumentation.rb:43:in `render'
  wicked_pdf (1.0.6) lib/wicked_pdf/pdf_helper.rb:22:in `render_with_wicked_pdf'
  wiselinks (1.2.1) lib/wiselinks/rendering.rb:34:in `render_with_wiselinks'
  remotipart (1.2.1) lib/remotipart/render_overrides.rb:14:in `render_with_remotipart'
  actionpack (4.2.6) lib/action_controller/metal/implicit_render.rb:10:in `default_render'
  actionpack (4.2.6) lib/action_controller/metal/implicit_render.rb:5:in `send_action'
  actionpack (4.2.6) lib/abstract_controller/base.rb:198:in `process_action'
  actionpack (4.2.6) lib/action_controller/metal/rendering.rb:10:in `process_action'
  actionpack (4.2.6) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  activesupport (4.2.6) lib/active_support/callbacks.rb:117:in `call'
  activesupport (4.2.6) lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
  activesupport (4.2.6) lib/active_support/callbacks.rb:505:in `call'
  activesupport (4.2.6) lib/active_support/callbacks.rb:92:in `__run_callbacks__'
  activesupport (4.2.6) lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
  activesupport (4.2.6) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.6) lib/abstract_controller/callbacks.rb:19:in `process_action'
  actionpack (4.2.6) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (4.2.6) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
  activesupport (4.2.6) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.6) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.6) lib/active_support/notifications.rb:164:in `instrument'
  actionpack (4.2.6) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  actionpack (4.2.6) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
  activerecord (4.2.6) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  actionpack (4.2.6) lib/abstract_controller/base.rb:137:in `process'
  actionview (4.2.6) lib/action_view/rendering.rb:30:in `process'
  rack-mini-profiler (0.10.1) lib/mini_profiler/profiling_methods.rb:102:in `block in profile_method'
  actionpack (4.2.6) lib/action_controller/metal.rb:196:in `dispatch'
  actionpack (4.2.6) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  actionpack (4.2.6) lib/action_controller/metal.rb:237:in `block in action'
  actionpack (4.2.6) lib/action_dispatch/routing/route_set.rb:74:in `dispatch'
  actionpack (4.2.6) lib/action_dispatch/routing/route_set.rb:43:in `serve'
  actionpack (4.2.6) lib/action_dispatch/journey/router.rb:43:in `block in serve'
  actionpack (4.2.6) lib/action_dispatch/journey/router.rb:30:in `serve'
  actionpack (4.2.6) lib/action_dispatch/routing/route_set.rb:817:in `call'
  rack-protection (1.5.3) lib/rack/protection/xss_header.rb:18:in `call'
  rack-protection (1.5.3) lib/rack/protection/base.rb:49:in `call'
  rack-protection (1.5.3) lib/rack/protection/base.rb:49:in `call'
  rack-protection (1.5.3) lib/rack/protection/path_traversal.rb:16:in `call'
  rack-protection (1.5.3) lib/rack/protection/json_csrf.rb:18:in `call'
  rack-protection (1.5.3) lib/rack/protection/base.rb:49:in `call'
  rack-protection (1.5.3) lib/rack/protection/base.rb:49:in `call'
  rack-protection (1.5.3) lib/rack/protection/frame_options.rb:31:in `call'
  rack-mini-profiler (0.10.1) lib/mini_profiler/profiler.rb:278:in `call'
  rack (1.6.4) lib/rack/deflater.rb:35:in `call'
  warden (1.2.6) lib/warden/manager.rb:35:in `block in call'
  warden (1.2.6) 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'
  remotipart (1.2.1) lib/remotipart/middleware.rb:27:in `call'
  actionpack (4.2.6) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.2.6) 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.6) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (4.2.6) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.2.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call'
  activerecord (4.2.6) lib/active_record/migration.rb:377:in `call'
  actionpack (4.2.6) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.2.6) lib/active_support/callbacks.rb:88:in `__run_callbacks__'
  activesupport (4.2.6) lib/active_support/callbacks.rb:778:in `_run_call_callbacks'
  activesupport (4.2.6) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.6) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.2.6) lib/action_dispatch/middleware/reloader.rb:73:in `call'
  actionpack (4.2.6) 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.6) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  web-console (3.1.1) lib/web_console/middleware.rb:131:in `call_app'
  web-console (3.1.1) lib/web_console/middleware.rb:28:in `block in call'
  web-console (3.1.1) lib/web_console/middleware.rb:18:in `call'
  actionpack (4.2.6) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  chewy (0.8.4) lib/chewy/railtie.rb:17:in `block in call'
  chewy (0.8.4) lib/chewy/strategy.rb:60:in `wrap'
  chewy (0.8.4) lib/chewy.rb:179:in `strategy'
  chewy (0.8.4) lib/chewy/railtie.rb:17:in `call'
  railties (4.2.6) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.6) lib/rails/rack/logger.rb:22:in `call'
  quiet_assets (1.1.0) lib/quiet_assets.rb:27:in `call_with_quiet_assets'
  request_store (1.3.1) lib/request_store/middleware.rb:9:in `call'
  actionpack (4.2.6) 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.6) 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.6) lib/action_dispatch/middleware/static.rb:120:in `call'
  rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
  rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
  sentry-raven (1.0.0) lib/raven/integrations/rack.rb:53:in `call'
  actionpack (4.2.6) lib/action_dispatch/middleware/static.rb:120:in `call'
  railties (4.2.6) lib/rails/engine.rb:518:in `call'
  railties (4.2.6) lib/rails/application.rb:165:in `call'
  rack (1.6.4) lib/rack/content_length.rb:15:in `call'
  puma (3.4.0) lib/puma/configuration.rb:224:in `call'
  puma (3.4.0) lib/puma/server.rb:569:in `handle_request'
  puma (3.4.0) lib/puma/server.rb:406:in `process_client'
  puma (3.4.0) lib/puma/server.rb:271:in `block in run'
  puma (3.4.0) lib/puma/thread_pool.rb:114:in `block in spawn_thread'

It's possible use table-for within cells templates?

Titinux commented 7 years ago

It's not possible to use two renderers. Does it works if you remove "include Cell::Erb" ?

apotonick commented 7 years ago

The gem you use uses Rails' render API, but Cells has its own API. It calls the wrong render. Solution is to rewrite table-for to use Cells.

havran commented 7 years ago

Thanks.