rails 4资产管道资产.rb重构问题

时间:2014-07-21 03:40:37

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

  

资产已过滤掉,将无法投放:添加   Rails.application.config.assets.precompile += %w( home.css )来   config/initializers/assets.rb并重启您的服务器

我正在尝试设置多个布局,这些布局针对不同的.css.scss和.js设置,一个用于主页,另一个用于应用程序的各个部分。

我的家庭布局如下:

doctype html
= render 'layouts/components/view_source_msg'
html
  head
    title
      = browser_title(yield(:title))
    = render 'layouts/components/meta'
    = render 'layouts/components/favicons'
    = stylesheet_link_tag 'home'
    = csrf_meta_tags

  body[class="#{build_body_class} loading"]

    == yield
    = render 'layouts/components/analytics'
    = javascript_include_tag 'home'

    javascript:
      $(function(){
        $(document).foundation();
        view_#{controller.controller_name.downcase}.init();
      });

错误说明设置初始化程序assets.rb,我将其设置为:

Rails.application.config.assets.precompile += %w( *.css.sass )
Rails.application.config.assets.precompile += %w( *.css.scss )
Rails.application.config.assets.precompile += %w( *.js )
Rails.application.config.assets.precompile += %w( *.js.coffee )
Rails.application.config.assets.precompile += %w( *.js.coffee.erb )

但这不起作用......任何人都能指出我正确的方向吗?谢谢

更新

我能够通过......来实现这个目标。

Rails.application.config.assets.precompile += %w( home.css )
Rails.application.config.assets.precompile += %w( home.js )

但这似乎有点过时了。在我的旧的rails应用程序中,其他方法可以正常工作......

1 个答案:

答案 0 :(得分:1)

自Rails v4以来,sprockets gem现在处理资产管道。它在app/assets/stylesheetsvendor/assets/stylesheets文件夹中查找样式表文件,因此如果您将home.css放在public/assets/stylesheets或其他内容中,则不会在那里查看。如果你特意告诉rails预先编译任何匹配该名称的资产,就像你在修复程序中那样,它会这样做,然后输出已编译的样式表并知道引用它,这就是它的工作原理。然而,这不是优选的惯例。 Ruby API for Coding Links to Assets