【问题标题】:Precompile slim templates using the rails asset pipeline使用 rails 资产管道预编译超薄模板
【发布时间】:2013-02-03 11:50:41
【问题描述】:

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

有没有办法让它工作?

【问题讨论】:

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


    【解决方案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】:

    抱歉,我迟到了,但 Dillon Buchanan 回答了这个问题here

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-08
          • 1970-01-01
          • 1970-01-01
          • 2012-10-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-20
          • 2013-05-28
          相关资源
          最近更新 更多