В посте речь пойдёт о работе с ресурсными файлами в Rails.
В Rails все ресурсные файлы раскиданы по следующим папкам:
Midispot
├-app # Код, специфичный для приложения
| └-assets
| ├-stylesheets
| ├-javascript
| └-images
├-lib # Свой код, подключаемый в разные приложения
| └-assets
| ├-stylesheets
| ├-javascript
| └-images
└-vendor # Сторонний код (календарь, слайдшоу, типа того)
└-assets
├-stylesheets
├-javascript
└-images
При том, что файлы лежат по разным папкам, путь к ним всегда однотипный: /assets/custom.js
, /assets/rails.png
Хэлперы ресурсных тэгов
<%= javascript_include_tag 'custom' %> # => <script src='/assets/custom.js' />
<%= stylesheet_link_tag 'style' %> # => <link href='/assets/style.css' media='screen' ... />
<%= image_tag 'rails.png' %> # => <img alt='Rails' src='/assets/rails.png' />
В продакшене к имени ресурсного файла будет добавлен его хэш (/assets/rails-9af4d124c65baf000032154.png). Это сделано для того, чтобы браузер мог легко определить, что файл изменился (изменение файла вызовет изменение хэша, а значит и названия), и перекачать его вместо использования закэшированной версии.
# app/assets/stylesheets/posts.css.erb
form.new_post input.submit {
background-image: url(<%= asset_path('button.png') %>)
}