我有一個呈現部分的iframe,而不是主應用程序佈局或資產管道的一部分。ActionView :: Template :: Error(960.css未預編譯)
我想包括一些樣式表,但是我得到這個錯誤:直接通過名稱或
ActionView::Template::Error (960sm.css isn't precompiled):
的Rails 3.1 的Heroku未包括在清單
我有一個呈現部分的iframe,而不是主應用程序佈局或資產管道的一部分。ActionView :: Template :: Error(960.css未預編譯)
我想包括一些樣式表,但是我得到這個錯誤:直接通過名稱或
ActionView::Template::Error (960sm.css isn't precompiled):
的Rails 3.1 的Heroku未包括在清單
樣式表(間接地通過require_tree)沒有預編譯,所以不能在生產中訪問。
您需要將表添加到要在環境application.rb中預編譯的項目列表中。
config.assets.precompile += ['960sm.css']
,然後訪問它的觀點:
stylesheet_link_tag('960sm')
而是管理的CSS文件的列表,你可能更願意簡單地通過增加.scss到文件名調節延伸。
因此,960sm.css將成爲960sm.css.scss。
這不應該破壞任何有效的CSS是有效的SCSS。
這很好,但請記住*不*要在預編譯列表中添加.scss。 「總是指定一個[以.js或.css結尾的預期編譯文件名](http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets),即使您想將Sass或CoffeeScript文件添加到預編譯陣「。 – AlexChaffee
如果你有很多獨立的資產,然後而不是增加每一個到列表中,這樣
config.assets.precompile += ['960sm.css']
你可能只想預編譯一切,像這樣:
def precompile?(path)
%w(app lib vendor).each do |asset_root|
assets_path = Rails.root.join(asset_root, 'assets').to_path
return true if path.starts_with?(assets_path)
end
false
end
# Precompile all assets under app/assets (unless they start with _)
Rails.application.config.assets.precompile << proc do |name, path|
starts_with_underscore = name.split('/').last.starts_with?('_')
unless starts_with_underscore
path = Rails.application.assets.resolve(name).to_path unless path # Rails 4 passes path; Rails 3 doesn't
precompile?(path)
end
end
感謝您幫助我理清資產管道。 – hagope
工作正常,幫了我很大忙,但是關於application.css的描述給出了關於它是如何工作的另一個想法:.../* *這是一個清單文件,將自動包含此目錄中可用的所有樣式表。 *和任何子目錄。您可以自由地爲該文件添加應用程序範圍的樣式,並且它們將出現在編譯文件的頂部 *,但通常最好爲每個樣式範圍創建一個新文件。 * = require_self * = require_tree。 */ –
這幫了我...幾個小時後找到解決方案 – justcode