Требование файлов активов из подкаталогов пути к активам

Я пытаюсь обновить свое приложение до Rails 3.1, и у меня довольно много пользовательских файлов Javascript, которые я пытаюсь перенести в новый конвейер ресурсов.

Моя текущая (то есть до 3.1) структура каталогов имеет что-то вроде:

public/
    foo/
        model.js
        controller.js
        etc...

Итак, я пытаюсь переместить их в lib/assets/javascripts и сохранить подкаталог foo/ нетронутым (вместо создания foo_model.js, foo_controller.js и т. д.).

В моем application.js я пытался сделать:

//= require foo/model

и

//= require 'foo/model'

Но они не работают. Rails всегда выдает мне страницу с ошибкой и говорит:

couldn't find file 'foo/model.js'

Я проверил, что вещи правильно включаются, если они не находятся в подкаталоге, поэтому я знаю, что дело не только в том, что мой каталог lib/assets не находится в пути включения или что-то в этом роде. Итак, я думаю, мне просто интересно, есть ли способ сделать это, или я должен просто выравнивать каталоги и использовать foo_model.js и тому подобное?


person bratsche    schedule 22.08.2011    source источник


Ответы (2)


Похоже, рельсы добавляют только один уровень подкаталогов к путям ресурсов.

Вы можете проверить текущие пути, запустив Rails.application.config.assets.paths в консоли rails

добавьте абсолютный путь к вашим папкам в application.rb, например

config.assets.paths += ["/path/to/lib/assets/javascript/foo"]
person YOU    schedule 22.08.2011
comment
Итак, согласно веб-странице использования Sprockets (getsprockets.org/installation_and_usage), вы должны иметь возможность делать так: : //= require ‹foo/model› Но, похоже, это не работает. Я не уверен, что это ошибка или я просто делаю что-то не так. Это кажется мне более идеальным, но ваше решение действительно работает, поэтому я отдаю вам должное. :) - person bratsche; 24.08.2011

Не уверен, почему rails добавляет только один уровень подкаталогов, но вы наверняка можете добавить дополнительные (полные) пути к конвейеру в config/application.rb. Документы ведут к ответу: http://guides.rubyonrails.org/asset_pipeline.html#asset-organization

Например:

config.assets.paths << "#{Rails.root}/app/assets/flash"

person Alan David Garcia    schedule 10.10.2011