2013-02-18 38 views
7

如果我可以使用rails资产管道预编译slim模板,这将会非常方便。我希望能够将我的模板粘贴到app/assets/html中并以这种方式提供。使用rails资产管道预编译slim模板

这里是我到目前为止有:

# 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') 

运行耙资产:预编译在app /资产读取.html.slim文件/ HTML,但它并没有编译它们和输出文件仍然具有.slim扩展名。

有没有办法让这项工作?

回答

1

答案是正确的,但需要要使用Sprockets 3+更新Rails 4。链轮变化意味着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 
+0

更新我的答案,使用[推荐方法](https://github.com/rails/sprockets-rails/issues/307#issuecomment-170707886)。 – 2016-02-10 17:03:45

0

你可以尝试添加上production.rb这样的新路径:

config.assets.precompile += ["*.js", "*.css", "*.slim"] #whatever you need 
1

对不起,我迟到党,但狄龙布坎南回答了这个问题here

转到config/initializers目录并创建像slim_assets.rb(或类似的东西)的文件,并复制面食以下行:

Rails.application.assets.register_engine('.slim', Slim::Template) 

我已经做了与HAML(我用了巨大的成功类似的东西为Rails/AngJS应用程序编写模板)。

-1

您需要的静态文件添加到预编译数组:由@库尔特 - 穆勒

config.assets.precompile + =%W(供应商/ Modernizr的404.html)