使用rails资产管道预编译slim模板

时间:2013-02-18 22:40:12

标签: ruby-on-rails asset-pipeline slim-lang

如果我可以使用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扩展名。

有没有办法让这项工作?

4 个答案:

答案 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)