作爲一段前置文本,我習慣於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