Rails:生产中js文件中的样式表路径

时间:2015-05-27 14:54:43

标签: javascript css ruby-on-rails ruby-on-rails-4

在我的js文件中,我有一些像

这样的配置
skel.init({
        reset: 'full',
        containers: '100%',
        breakpoints: {
            global: { href: '/assets/skel/style.scss', grid: { gutters: ['2.5em', 0] } },
            xlarge: { media: '(max-width: 1800px)', href: '/assets/skel/style-xlarge.scss' },
            large: { media: '(max-width: 1280px)', href: '/assets/skel/style-large.scss', grid: { gutters: ['2em', 0] } },
            medium: { media: '(max-width: 980px)', href: '/assets/skel/style-medium.scss'},
            small: { media: '(max-width: 736px)', href: '/assets/skel/style-small.scss', grid: { gutters: ['1.5em', 0] }, viewport: { scalable: false } },
            xsmall: { media: '(max-width: 480px)', href: '/assets/skel/style-xsmall.scss' }
        }
    });

正如您所看到的,href等css文件href: '/assets/skel/style.scss'包含在app/assets/stylesheets/skel目录中。在开发中它工作得很完美,但在生产资产编译时,js无法找到那些css文件。

我尝试将config.assets.precompile += ['skel/*']添加到production.rb以将skel资产编译到skel目录,但它没有帮助

1 个答案:

答案 0 :(得分:2)

如果您在javascript文件中添加.erb扩展名,则可以在javascript中使用asset_path帮助程序,这些帮助程序将在资产预编译时正确扩展。例如,将您的javascript文件设为some_filename.js.erb,然后在里面,您可以像这样设置CSS的路径:

global: { href: '<%= stylesheet_path "skel/style" %>', grid: { gutters: ['2.5em', 0] } }

依旧......

如需参考,请参阅http://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-stylesheet_path以了解stylesheet_path如何扩展。