使用Rails资产管道预编译Slim模板

7

如果我可以使用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 assets:precompile 命令会读取 app/assets/html 目录下的 .html.slim 文件,但不会将其编译。最终生成的文件仍然保留 .slim 扩展名。

有没有办法让它正常工作?

4个回答

1
@kurt-mueller的答案是正确的,但需要针对Rails 4和Sprockets 3+进行更新。 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

已更新我的答案,使用了推荐的方法 - Andrew France

1
抱歉我来晚了,但 Dillon Buchanan 在这里回答了这个问题。
进入 config/initializers 目录并创建一个类似于 slim_assets.rb 的文件(或类似的名称),然后复制粘贴以下行:
Rails.application.assets.register_engine('.slim', Slim::Template)

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


0

您可以尝试在production.rb中像这样添加新路径:

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

-1

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接