7

如果我可以使用 rails 资产管道预编译超薄模板,那将非常方便。我希望将我的模板粘贴在 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 assets:precompile 会读取 app/assets/html 中的 .html.slim 文件,但它不会编译它们,并且输出文件仍然具有 .slim 扩展名。

有没有办法使这项工作?

4

4 回答 4

1

抱歉,我迟到了,但狄龙·布坎南在这里回答了这个问题。

转到config/initializers目录并创建一个类似slim_assets.rb(或类似的)文件并复制以下行:

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

我用 HAML(我用它为 Rails/AngJS 应用程序编写模板)做了类似的事情并取得了巨大的成功。

于 2013-08-18T22:24:29.967 回答
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
于 2016-02-09T17:32:50.103 回答
0

您可以尝试在以下位置添加新路径production.rb

config.assets.precompile += ["*.js", "*.css", "*.slim"]  #whatever you need
于 2013-05-02T22:28:21.373 回答
-1

您需要将静态文件添加到预编译数组中:

config.assets.precompile += %w(vendor/modernizr 404.html)

于 2014-05-20T01:29:00.367 回答