изискване на файлове с активи от поддиректории на пътя на актива

В процес съм на опит да надстроя приложението си до 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) трябва да можете да правите като : //= изисква ‹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