underscore template backbone jquery ruby-on-rails asset-pipeline ujs

jquery - template - ¿Cómo renderizar new.js.coffee.erb en aplicaciones/vistas?



github backbone (2)

Si desea mantener la extensión .js.coffee.erb aquí hay un código para que Rails 4 .js.coffee.erb que Rails reconozca el archivo como una plantilla de vista válida:

# config/initializers/coffee_erb_handler.rb ActionView::Template.register_template_handler ''coffee.erb'', Coffee::Rails::TemplateHandler # without this there will be template not found error class ActionView::PathResolver < ActionView::Resolver EXTRACT_METHODS = %w{extract_handler_and_format_and_variant extract_handler_and_format} # name for rails 4.1 resp. 4.0 method_name = EXTRACT_METHODS.detect{|m| method_defined?(m) || private_method_defined?(m)} raise ''unknown extract method name'' if method_name.nil? old_method_name = "old_#{method_name}" alias_method old_method_name, method_name define_method(method_name) do |path, default_formats| self.send(old_method_name, path.gsub(//.js/.coffee/.erb$/, ''.js.coffee''), default_formats) end end

(Esta es una contribución de Cervinka en el número 36 de las líneas de café )

Usando Rails 3.1 jquery_ujs, tengo un enlace con: remote => true, y la nueva acción del controlador responde con js y render new.js.erb que contiene:

$(''#post-form'').html(''<%= escape_javascript(render(:partial => "form")) %>'');

Hace que _form.html.erb sea parcial. Esto funciona.

Ahora quiero usar Coffeescript, pero cambiar el nombre de new.js.erb a new.js.coffee.erb no funciona. ¿El inventario de activos solo funciona en aplicaciones / activos? ¿Qué estoy haciendo mal? Gracias.


Tuve este mismo problema usando Rails 3.1.0. Intenta cambiar el nombre de tu archivo a new.js.coffee . Todavía debería renderizar erb a pesar de no tener la extensión en el nombre del archivo.

Definitivamente es confuso que las plantillas de vista no sigan las mismas convenciones que la cartera de activos.