El archivo Rails js.erb no puede encontrar el método “render”

Tengo el siguiente código en un archivo JavaScript ERB:

$(document).ready(function() { $("#workout-week").append(  "show_training_period", :locals => { :period => @period }) %> ); }); 

Cuando llegué a la vista, recibí el siguiente error:

 undefined method `render' for #<#:0x00000005dbfe98> 

El parcial existe, y la variable local no es nula. ¿Alguna idea de por qué esto podría pasar?

Stack trace:

 app/assets/javascripts/slider.js.erb:2:in `evaluate_source' tilt (1.3.3) lib/tilt/template.rb:209:in `instance_eval' tilt (1.3.3) lib/tilt/template.rb:209:in `evaluate_source' tilt (1.3.3) lib/tilt/template.rb:144:in `cached_evaluate' tilt (1.3.3) lib/tilt/template.rb:127:in `evaluate' tilt (1.3.3) lib/tilt/template.rb:76:in `render' sprockets (2.0.3) lib/sprockets/context.rb:175:in `block in evaluate' sprockets (2.0.3) lib/sprockets/context.rb:172:in `each' sprockets (2.0.3) lib/sprockets/context.rb:172:in `evaluate' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:171:in `build_dependency_context_and_body' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:135:in `dependency_context' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:194:in `build_dependencies_paths_and_assets' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:141:in `dependency_paths' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:61:in `mtime' sprockets (2.0.3) lib/sprockets/asset.rb:58:in `block in encode_with' sprockets (2.0.3) lib/sprockets/asset.rb:57:in `each' sprockets (2.0.3) lib/sprockets/asset.rb:57:in `encode_with' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:43:in `encode_with' sprockets (2.0.3) lib/sprockets/caching.rb:52:in `cache_asset' sprockets (2.0.3) lib/sprockets/environment.rb:82:in `build_asset' sprockets (2.0.3) lib/sprockets/base.rb:99:in `find_asset' sprockets (2.0.3) lib/sprockets/environment.rb:72:in `find_asset' sprockets (2.0.3) lib/sprockets/base.rb:110:in `[]' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:200:in `block in build_dependencies_paths_and_assets' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:194:in `each' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:194:in `build_dependencies_paths_and_assets' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:141:in `dependency_paths' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:61:in `mtime' sprockets (2.0.3) lib/sprockets/asset.rb:58:in `block in encode_with' sprockets (2.0.3) lib/sprockets/asset.rb:57:in `each' sprockets (2.0.3) lib/sprockets/asset.rb:57:in `encode_with' sprockets (2.0.3) lib/sprockets/bundled_asset.rb:43:in `encode_with' sprockets (2.0.3) lib/sprockets/caching.rb:52:in `cache_asset' sprockets (2.0.3) lib/sprockets/environment.rb:82:in `build_asset' sprockets (2.0.3) lib/sprockets/trail.rb:102:in `find_asset_in_path' sprockets (2.0.3) lib/sprockets/base.rb:101:in `find_asset' sprockets (2.0.3) lib/sprockets/environment.rb:72:in `find_asset' sprockets (2.0.3) lib/sprockets/base.rb:110:in `[]' actionpack (3.1.0) lib/sprockets/helpers/rails_helper.rb:124:in `asset_for' actionpack (3.1.0) lib/sprockets/helpers/rails_helper.rb:28:in `block in javascript_include_tag' actionpack (3.1.0) lib/sprockets/helpers/rails_helper.rb:27:in `collect' actionpack (3.1.0) lib/sprockets/helpers/rails_helper.rb:27:in `javascript_include_tag' app/views/layouts/application.html.haml:7:in `_app_views_layouts_application_html_haml__2778507683501201875_51020080' actionpack (3.1.0) lib/action_view/template.rb:144:in `block in render' activesupport (3.1.0) lib/active_support/notifications.rb:55:in `instrument' actionpack (3.1.0) lib/action_view/template.rb:142:in `render' actionpack (3.1.0) lib/action_view/renderer/template_renderer.rb:52:in `render_with_layout' actionpack (3.1.0) lib/action_view/renderer/template_renderer.rb:38:in `render_template' actionpack (3.1.0) lib/action_view/renderer/template_renderer.rb:12:in `block in render' actionpack (3.1.0) lib/action_view/renderer/abstract_renderer.rb:22:in `wrap_formats' actionpack (3.1.0) lib/action_view/renderer/template_renderer.rb:9:in `render' actionpack (3.1.0) lib/action_view/renderer/renderer.rb:36:in `render_template' actionpack (3.1.0) lib/action_view/renderer/renderer.rb:17:in `render' actionpack (3.1.0) lib/abstract_controller/rendering.rb:120:in `_render_template' actionpack (3.1.0) lib/action_controller/metal/streaming.rb:250:in `_render_template' actionpack (3.1.0) lib/abstract_controller/rendering.rb:114:in `render_to_body' actionpack (3.1.0) lib/action_controller/metal/renderers.rb:30:in `render_to_body' actionpack (3.1.0) lib/action_controller/metal/compatibility.rb:43:in `render_to_body' actionpack (3.1.0) lib/abstract_controller/rendering.rb:99:in `render' actionpack (3.1.0) lib/action_controller/metal/rendering.rb:16:in `render' actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:40:in `block (2 levels) in render' activesupport (3.1.0) lib/active_support/core_ext/benchmark.rb:5:in `block in ms' /home/mike/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:310:in `realtime' activesupport (3.1.0) lib/active_support/core_ext/benchmark.rb:5:in `ms' actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:40:in `block in render' actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:78:in `cleanup_view_runtime' activerecord (3.1.0) lib/active_record/railties/controller_runtime.rb:24:in `cleanup_view_runtime' actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:39:in `render' actionpack (3.1.0) lib/action_controller/metal/implicit_render.rb:10:in `default_render' actionpack (3.1.0) lib/action_controller/metal/implicit_render.rb:5:in `send_action' actionpack (3.1.0) lib/abstract_controller/base.rb:167:in `process_action' actionpack (3.1.0) lib/action_controller/metal/rendering.rb:10:in `process_action' actionpack (3.1.0) lib/abstract_controller/callbacks.rb:18:in `block in process_action' activesupport (3.1.0) lib/active_support/callbacks.rb:425:in `_run__4540075312289376507__process_action__207230359584297735__callbacks' activesupport (3.1.0) lib/active_support/callbacks.rb:386:in `_run_process_action_callbacks' activesupport (3.1.0) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.1.0) lib/abstract_controller/callbacks.rb:17:in `process_action' actionpack (3.1.0) lib/action_controller/metal/rescue.rb:17:in `process_action' actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action' activesupport (3.1.0) lib/active_support/notifications.rb:53:in `block in instrument' activesupport (3.1.0) lib/active_support/notifications/instrumenter.rb:21:in `instrument' activesupport (3.1.0) lib/active_support/notifications.rb:53:in `instrument' actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:29:in `process_action' actionpack (3.1.0) lib/action_controller/metal/params_wrapper.rb:201:in `process_action' activerecord (3.1.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action' actionpack (3.1.0) lib/abstract_controller/base.rb:121:in `process' actionpack (3.1.0) lib/abstract_controller/rendering.rb:45:in `process' actionpack (3.1.0) lib/action_controller/metal.rb:193:in `dispatch' actionpack (3.1.0) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' actionpack (3.1.0) lib/action_controller/metal.rb:236:in `block in action' actionpack (3.1.0) lib/action_dispatch/routing/route_set.rb:65:in `call' actionpack (3.1.0) lib/action_dispatch/routing/route_set.rb:65:in `dispatch' actionpack (3.1.0) lib/action_dispatch/routing/route_set.rb:29:in `call' rack-mount (0.8.3) lib/rack/mount/route_set.rb:152:in `block in call' rack-mount (0.8.3) lib/rack/mount/code_generation.rb:96:in `block in recognize' rack-mount (0.8.3) lib/rack/mount/code_generation.rb:75:in `optimized_each' rack-mount (0.8.3) lib/rack/mount/code_generation.rb:95:in `recognize' rack-mount (0.8.3) lib/rack/mount/route_set.rb:141:in `call' actionpack (3.1.0) lib/action_dispatch/routing/route_set.rb:531:in `call' warden (1.1.0) lib/warden/manager.rb:35:in `block in call' warden (1.1.0) lib/warden/manager.rb:34:in `catch' warden (1.1.0) lib/warden/manager.rb:34:in `call' actionpack (3.1.0) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' rack (1.3.5) lib/rack/etag.rb:23:in `call' rack (1.3.5) lib/rack/conditionalget.rb:25:in `call' actionpack (3.1.0) lib/action_dispatch/middleware/head.rb:14:in `call' actionpack (3.1.0) lib/action_dispatch/middleware/params_parser.rb:21:in `call' actionpack (3.1.0) lib/action_dispatch/middleware/flash.rb:243:in `call' rack (1.3.5) lib/rack/session/abstract/id.rb:195:in `context' rack (1.3.5) lib/rack/session/abstract/id.rb:190:in `call' actionpack (3.1.0) lib/action_dispatch/middleware/cookies.rb:326:in `call' activerecord (3.1.0) lib/active_record/query_cache.rb:62:in `call' activerecord (3.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:477:in `call' actionpack (3.1.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' activesupport (3.1.0) lib/active_support/callbacks.rb:392:in `_run_call_callbacks' activesupport (3.1.0) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.1.0) lib/action_dispatch/middleware/callbacks.rb:28:in `call' actionpack (3.1.0) lib/action_dispatch/middleware/reloader.rb:68:in `call' rack (1.3.5) lib/rack/sendfile.rb:101:in `call' actionpack (3.1.0) lib/action_dispatch/middleware/remote_ip.rb:48:in `call' actionpack (3.1.0) lib/action_dispatch/middleware/show_exceptions.rb:47:in `call' railties (3.1.0) lib/rails/rack/logger.rb:13:in `call' rack (1.3.5) lib/rack/methodoverride.rb:24:in `call' rack (1.3.5) lib/rack/runtime.rb:17:in `call' activesupport (3.1.0) lib/active_support/cache/strategy/local_cache.rb:72:in `call' rack (1.3.5) lib/rack/lock.rb:15:in `call' actionpack (3.1.0) lib/action_dispatch/middleware/static.rb:53:in `call' railties (3.1.0) lib/rails/engine.rb:455:in `call' railties (3.1.0) lib/rails/rack/content_length.rb:16:in `call' railties (3.1.0) lib/rails/rack/log_tailer.rb:14:in `call' rack (1.3.5) lib/rack/handler/webrick.rb:59:in `service' /home/mike/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service' /home/mike/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run' /home/mike/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread' 

Estás tratando de usar render de activos. Desafortunadamente, no es posible ahora, mira esto .

Con la nueva canalización de activos, dentro de los activos estáticos ( /app|lib|vendor/assets/ ) puede usar ayudantes “estáticos” (es decir, <%= asset_path "/foo/bar" %> ), porque los comstack una sola vez (si está en producción, es decir) y no cada vez que realiza una solicitud de http. Por lo tanto, no tiene sentido utilizar métodos como render (o cosas ‘dinámicas’ generales) dentro de un activo estático.

Para su caso particular, puede usar vistas * .js.erb (que “coincidirán” con una acción particular dentro del controlador) o javascript renderizado directamente dentro del html.

No puedes usar el renderizado de Rieles. Pero aún es posible usar parciales usando la representación Erubis :: Eruby directamente.

 $(document).ready(function() { $("#workout-week").append(<%= escape_javascript( Erubis::Eruby.new(File.read(File.join(Rails.root, 'app/views', '_show_training_period.html.erb'))).result(period: @period)) %>); }); 

O en Haml

 $(document).ready(function() { $("#workout-week").append(<%= escape_javascript( Haml::Engine.new(File.read(File.join(Rails.root, 'app/views', '_show_training_period.html.haml'))).render(Object.new, period: @period)) %>); }); 

Por alguna razón, usar ERB rompe la representación del piñón.
Y la forma vinculante de pasar las variables locales es demasiado fea.

Es una forma de evitarlo, pero es bueno recordar que no se recomienda el uso de parciales dentro de los activos. Una mejor manera es colocar el código parcial oculto en algún lugar del HTML y usarlo en tus javascripts.