您链接到的问题有第二个答案,该答案链接到posterous 上的一篇博客文章,现在已经死了......但我在archive.org 上找到了它!该帖子还包含一个要点,其中包含初始化程序所需的代码,以便您可以命名以结尾的文件js.coffee_haml
并对其进行处理。
为了防止将来出现死链接,这里是要点中的代码,但我没有编写它,也没有测试它是否仍然有效:
module Coffee
module Rails
class HamlTemplateHandler
def self.haml_handler
@@haml_handler ||= ActionView::Template.registered_template_handler(:haml)
end
def self.call(template)
compiled_source = haml_handler.call(template)
"CoffeeScript.compile(begin;#{compiled_source};end)"
end
end
end
end
ActiveSupport.on_load(:action_view) do
ActionView::Template.register_template_handler :coffee_haml, Coffee::Rails::HamlTemplateHandler
end
博文中还提到了haml不允许嵌套纯文本,所以如果你想在coffeescript中做这样的事情:
if xyz == 1
do_this y
do_that x
您必须将其包装在:plain
过滤器中:
:plain
if xyz == 1
do_this y
do_that x