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.