2015-06-27 2 views
2

У меня есть эта структура каталогов в моем проекте:Подкаталоги и трубопровод Рельсы активов

- assets 
-- images 
--- game 
--- avatars 

Я ссылки на изображение в аватаров в коде следующим образом:

image_tag('avatar.png') 

В развитии этого работает, в производстве Я получаю сообщение об ошибке.

У меня есть этот код в application.rb

Dir.glob("#{Rails.root}/app/assets/images/**/").each do |path| 
    config.assets.paths << path 
end 

Когда я составляю свои активы в развитии я вижу, что они создаются в общественных местах, под их подкаталогов. Так как это:

- public 
-- assets 
--- game 
--- avatars 

Но в журнале я вижу это:

http://demo1e97.lvh.me:3000/assets/avatar-edc80241a6bae07d6ed70cdffef15753.png 

Так он не использует подкаталог там.

Каков наилучший способ решить эту проблему, поэтому она работает как в разработке, так и в производстве? Должны ли все изображения записываться в один каталог публично или включать вложенную папку при обращении к изображениям?

ответ

1

Вы всегда должны включать в себя относительный путь (под assets/images) при ссылке на изображение, как это:

<%= image_tag("avatars/avatar.png") %> 

Это будет преобразовываться в файл, расположенный на app/assets/images/avatars/avatar.png и обеспечит его работы во всех средах. Вы можете полностью удалить этот код из application.rb: номер

Dir.glob("#{Rails.root}/app/assets/images/**/").each do |path| 
    config.assets.paths << path 
end 
0

точки: 1 Пока вы добавляете подкаталоги изображения, таблицы стилей, сценарии вам не нужно, чтобы добавить их к пути активов. Все подкаталоги становятся/активами.

Так что ваша текущая помощь будет генерировать здесь:

<%= image_tag("game/avatar.png") %> 
=> http://demo1e97.lvh.me:3000/assets/avatar.png 

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

Смежные вопросы