我想提供已通过HAML预处理的客户端模板。我尝试使用haml_assets gem并将以下代码添加到初始化程序中:
Rails.application.assets.register_engine ".haml", Tilt::HamlTemplate
当我访问资产时,这两种方法都提供原始HAML而不是编译HAML。如何将HAML添加到管道中?
答案 0 :(得分:12)
只是为了清理事情,因为我发现当前的答案有点令人恼火(尽管让我走向正确的方向)
如果我在初始化文件中有这一行,它可以工作:
# config/initializers/haml_assets.rb
Rails.application.assets.register_engine '.haml', Tilt::HamlTemplate
将haml文件放入assets文件夹,例如:
# app/assets/templates
不使用haml_asset gem!
答案 1 :(得分:10)
application.rb中的以下代码适用于Rails 3.2(预编译后的开发和生产中):
require 'haml'
config.assets.paths << Rails.root.join("app", "assets", "templates")
class HamlTemplate < Tilt::HamlTemplate
def prepare
@options = @options.merge :format => :html5
super
end
end
config.before_initialize do |app|
require 'sprockets'
Sprockets::Engines #force autoloading
Sprockets.register_engine '.haml', HamlTemplate
end
这允许您将模板放在以后缀.html.haml命名的app / assets / templates中(您需要.html或者.htm文件在预编译过程中生成而不是.html)
答案 2 :(得分:5)
这对我有用:
# app/assets/javascripts/test.html.haml
%p hello
# config/initializers/haml_template.rb
Rails.application.assets.register_mime_type 'text/html', '.html'
Rails.application.assets.register_engine '.haml', Tilt::HamlTemplate
适用于http://127.0.0.1:3000/assets/test.html.haml
Rails.application.assets
是Sprockets::Environment
。
请参阅此处获取API参考:
答案 3 :(得分:0)
使用与我相同的方法:
%tr
%th
%a.action.link.show
%td
%td
以纯haml的形式返回。但
%tr
%th
%a.action.link.show
%td cell 2
%td cell 3
被用作html块。所以我认为这是haml gem的东西。您可以使用以下内容强制进行haml转换:
%tr
%th
%a.action.link.show
%td  
%td  
希望它有所帮助...
答案 4 :(得分:0)
在我们有完整的解决方案之前,必须先将以前的两个答案合并。
以下行适用于开发:
# config/initializers/haml_assets.rb
Rails.application.assets.register_engine '.haml', Tilt::HamlTemplate
然后在任何预编译上失败。
要使资产服务的haml在预编译之后工作,我们还需要在application.rb中使用这些行:
require 'haml'
config.assets.paths << Rails.root.join("app", "assets", "templates")
class HamlTemplate < Tilt::HamlTemplate
def prepare
@options = @options.merge :format => :html5
super
end
end
config.before_initialize do |app|
require 'sprockets'
Sprockets::Engines #force autoloading
Sprockets.register_engine '.haml', HamlTemplate
end
答案 5 :(得分:0)
带有链轮3和4
# in /config/initializers/haml.rb
Rails.application.config.assets.configure do |env|
env.register_mime_type "text/haml", extensions: %w(.haml .html.haml)
env.register_transformer 'text/haml', Tilt::HamlTemplate.default_mime_type, Tilt::HamlTemplate
end