如果我可以使用rails资产管道预编译slim模板,那将会非常方便。我希望将我的模板粘贴在app / assets / html中并以这种方式提供它们。
这是我到目前为止所得到的:
# config/initializers/slim.rb
Rails.application.assets.register_engine('.slim', Slim::Template)
# config/application.rb
config.assets.paths << "#{Rails.root}/app/assets/html"
config.assets.register_mime_type('text/html', '.html')
运行rake资产:预编译读取app / assets / html中的.html.slim文件,但它不编译它们,输出文件仍然具有.slim扩展名。
有没有办法让这项工作?
答案 0 :(得分:1)
对不起我迟到了,但Dillon Buchanan回答了这个问题here。
转到config/initializers
目录并创建一个类似slim_assets.rb
(或类似内容)的文件,并将以下行复制 - 意面
Rails.application.assets.register_engine('.slim', Slim::Template)
我在HAML(我用它来为Rails / AngJS应用程序编写模板)方面取得了类似的成功。
答案 1 :(得分:1)
@ kurt-mueller的回答是正确的,但需要使用Sprockets 3+更新Rails 4。 Sprockets发生了变化,这意味着初始化期间不存在assets
属性。相反,你可以这样做:
# config/initializers/slim.rb
Rails.application.config.after_initialize do |app|
app.config.assets.configure do |env|
env.register_engine(".slim", Slim::Template)
end
end
答案 2 :(得分:0)
您可以尝试在production.rb
上添加这样的新路径:
config.assets.precompile += ["*.js", "*.css", "*.slim"] #whatever you need
答案 3 :(得分:-1)
您需要将静态文件添加到预编译数组中:
config.assets.precompile + =%w(vendor / modernizr 404.html)