Конвейер ресурсов Rails 3: Как предотвратить загрузку некоторых файлов активов для всех (например, для браузера) - PullRequest
2 голосов
/ 16 марта 2012

Я хочу отправить файл 'excanvas.min.js' только в Internet Explorer и не в другие браузеры .

Так я и сделал в своем application.html.erb:

<!--[if lt IE 9]>
<%= javascript_include_tag 'excanvas.min'
# Excanvas for use of Canvas in IE up to version 8
%>
<![endif]-->
<%= javascript_include_tag 'application' %>

Но я получаю следующую ошибку (в производстве):

Completed 500 Internal Server Error in 3ms

ActionView::Template::Error (excanvas.min.js isn't precompiled)

Ошибка также возникает, когда вы заставляете Rails прекомпилировать файл с помощью

# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
config.assets.precompile += %W(excanvas.min.js,other_file.css,even_anotherfile.js)

в «config / production.rb». Что я делаю не так?

Я мог бы сделать

//= require excanvas.min

в application.js. Но это будет включать в себя файл для каждого браузера ...

Информация: я сделал обновление из Rails 3.0-Application.

Ответы [ 2 ]

3 голосов
/ 16 марта 2012

Проблема в следующей строке

config.assets.precompile += %W(excanvas.min.js,other_file.css,even_anotherfile.js)

%W - это ярлык для создания массива, и элементы должны быть разделены пробелом.В вашем случае вы добавляете строку excanvas.min.js,other_file.css,even_anotherfile.js в список прекомпиляции.

Поэтому просто замените строку следующим образом:

config.assets.precompile += %W(excanvas.min.js other_file.css even_anotherfile.js)
1 голос
/ 16 марта 2012

просто попробуйте добавить <% #%> для строки и.я думаю, что они будут отображаться как комментарий.

ИЛИ

Вы можете сделать это, js.judjj браузер с js и загрузить соответствующий файл CSS

...