将外部css和js放在rails

时间:2016-01-11 04:33:06

标签: javascript css ruby-on-rails

我刚开始使用rails并加载外部资源,例如cssjs对我来说一直是个问题。在几个地方读书,我发现,css应该放在app/assets/stylesheetsjs app/assets/javascripts内。完成此操作后,我在我的视图文件中调用了cssjs,如

<%= stylesheet_link_tag "<<path to my css>>" %> 

表示css和

<%= javascript_include_tag "<<path to my js>>"  %>

我在config/initializers/assets.rb

中加入了这一行
Rails.application.config.assets.precompile += [/.*\.js/,/.*\.css/]

但这样做会给我带来某种编译错误。但我不确定它是否是加载外部资源的正确方法。我需要更改的其他地方才能加载cssjs以及包含外部资源的最佳做法在rails方面也表现出色。

2 个答案:

答案 0 :(得分:3)

资产管道

您所指的是名为asset pipeline的内容 - app/assets文件夹用于存储HTML的所有“相关”文件 - css / {{1 } / js等。

资产管道非常简单 -

  

资产管道提供了一个连接和缩小或压缩JavaScript和CSS资产的框架。它还增加了以其他语言和预处理器(如CoffeeScript,Sass和ERB)编写这些资产的功能。

它的功能是为您提供一种将CSS / JS“编译”为精简(minified)文件的方法,您可以在前端HTML中调用这些文件。最终目标是使您的“资产”尽可能小,这样您的页面加载速度最快。

-

在您的情况下,您需要查找Sprockets Manifest Directives -

images

上面将使用#app/assets/stylesheets/application.css /* *= require self *= require_tree . */ 中的每个CSS文件并将它们连接成一个app/assets/stylesheets文件:

application.css

因此,要直接回答您的问题,您只需将外部样式表存储在#app/views/layouts/application.html.erb <%= stylesheet_link_tag :application %> 文件夹中。

如果您有“真实”的外部样式表(由Google或其他人托管),您需要将其包含在app/assets/stylesheets中,如下所示:

layout

答案 1 :(得分:2)

在你的各个文件夹中添加你的css和js后,你必须在application.js和application.css中要求这些文件然后你可以在你的html中包含这两个文件。请尝试以下代码:

application.css

//= require abc

的application.js

//= require xyz

在你的HTML中:

<%= stylesheet_link_tag "application" %> 
<%= javascript_include_tag "application"  %>