作为一段前置文本,我习惯于Rails 2,但开始构建一个示例应用程序以适应Rails 4,并且我正在与Sprockets和资产管道进行恶梦即使在阅读官方指南和我能找到的所有问题之后。如何正确使用链轮Gem with Rails 4
我的CSS和JS都包含像这样在我的主视图文件:
<head>
...
<%= stylesheet_link_tag "application", media: "all" %>
<%= stylesheet_link_tag "style-responsive", media: "all" %>
<%= stylesheet_link_tag params[:controller], :media => "all" if stylesheet_exists?(params[:controller]) %>
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<%= javascript_include_tag 'html5shiv' %>
<%= javascript_include_tag 'respond.min' %>
<![endif]-->
...
</head>
....
<%= javascript_include_tag "jquery-1.10.2.min" %>
<%= javascript_include_tag "jquery-ui-1.9.2.custom.min" %>
<%= javascript_include_tag "jquery-migrate-1.2.1.min" %>
<%= javascript_include_tag "bootstrap.min" %>
<%= javascript_include_tag "modernizr.min" %>
<%= javascript_include_tag params[:controller] if javascript_exists?(params[:controller]) %>
stylesheet_exists?
和javascript_exists?
是因为我只想包括某些文件,在需要的时候,而不是休息这是辅助功能每个页面都需要。
第一个错误是:
Asset filtered out and will not be served: add `Rails.application.config.assets.precompile += %w(style-responsive.css)` to `config/initializers/assets.rb` and restart your server
如果我再补充一点,到assets.rb
并重新启动,它移动和重复在我看来,每一个stylesheet_link_tag
和javascript_include_tag
问题。
我可以忍受的,即使似乎正确不但这是以轰然倒下时解释到达
<%= javascript_include_tag params[:controller] %>
我会那么还需要包括每一个js中,我为每个控制器创建文件?这似乎是错误的,我将不得不不断更新文件,每当我创建一个新的资产文件。
在我application.css.erb
我只有
*= require_self.
,但我有老式的CSS @import
一些样式表:
@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic);
@import url('bootstrap.min.css');
@import url('bootstrap-reset.css');
@import url('jquery-ui-1.10.3.css');
@import url('<%= asset_path 'css/font-awesome.min.css' %>');
@import url('custom-ico-fonts.css');
,但所有的这些似乎做工精细,并且不需要将在assets.rb
中提及。
我没有require
s在application.js
中设置。
TLDR我想我错误地使用了Sprockets和Asset Pipeline,有人可能请指出我做错了什么,并指向正确的方向吗?
我读了一些与sprocket-rails gem version 2.2.3有关的类似问题,但是我安装了2.2.4,这意味着已经修复了以前版本中存在的任何问题。
Rails 4.2.1
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
sprockets (3.0.1, 2.12.3)
sprockets-rails (2.2.4)
哇,感谢您的深入解答,这无疑帮助我更多地理解了这一点,并明确了下一步要读的内容。 – martincarlin87