Rails 3.1 активы и проблемы макета - PullRequest
1 голос
/ 15 сентября 2011

У меня есть приложение rails 3.1, которое использует макет по умолчанию с css в "/app/assets/stylesheets/application.css" в соответствии со стандартной практикой.Это прекрасно работает с конвейерной обработкой ресурсов для основной части моего приложения.

Но я использую другой макет "создания отчетов", когда создаю отчет, который использует /app/views/layouts/showreports.html.расположение эрб выглядит следующим образом:

<!DOCTYPE html>
<html>
<head>
  <%= stylesheet_link_tag "showreports" %>
  <%= javascript_include_tag "showreports" %>
  <%= csrf_meta_tag %>
</head>
<body>
  <div id="mainarea" class="container">
    <div class="span-24 last">
      <%= yield %>
    </div>
  </div>
</body>

Я использую rake assets:clean; rake assets:precompile для предварительной компиляции своих ресурсов и проверки, что все выглядит хорошо в файле манифеста (/public/assets/manifest.yml), и я надеваюне вижу ссылок на showreports.css или showreports.js.

Когда я тестирую свою программу в режиме dev, неудивительно, что она не может найти эти файлы.

Я предполагаюэто основной вопрос звездочек с rails 3.1, но я подумал, что звездочки будут достаточно умны, чтобы проанализировать все файлы макета для ресурсов (кроме файла application.html.erb по умолчанию).

Просто интересно, может ли это быть ошибкой или просто моим недоразумением о том, как это должно работать.

Ура,

Грег


ОБНОВЛЕНИЕ

После более долгих попыток я отвечаю на свой вопрос, так как это имеет для меня наибольшее значение ...

Этот ответ действительно дал правильную подсказку

То, что я делал неправильно, использовало файлы с именами "showreports.css" и "showreports.js" в качестве файлов манифеста.

Мое исправление заключалось в создании /app/assets/stylesheets/showreports и /app/assets/javascripts/showreportsи затем переименовать мои showreports. (css | js) в application. (css | js) внутри соответствующих им каталогов.

После этого rake assets:precompile нашел их и добавил их правильно в файл манифеста.

Ответы [ 2 ]

4 голосов
/ 16 сентября 2011

Согласно http://guides.rubyonrails.org/asset_pipeline.html вы также должны добавить следующее:

config.assets.precompile += %w(showreports.css showreports.js)

в файл application.rb

0 голосов
/ 15 сентября 2011

Это недоразумение. Rails Assets Pipeline компилирует только файлы, расположенные в RAILS_ROOT/app/assets, и вы должны ссылаться на них напрямую. Если вы хотите, чтобы другой файл был сгенерирован, просто создайте другой файл манифеста с содержанием, аналогичным application.css / js. Также проверьте директивы require, чтобы не включать один файл в другой.

...