2013-02-18 70 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)