Есть несколько вариантов в зависимости от ваших потребностей. Первое, что приходит мне в голову, - это создать пару вспомогательных методов. Один для вызова из ваших пользовательских представлений и один для вызова из вашего глобального макета.
Например, создать файл app/helpers/layout_helper.rb
module LayoutHelper
def header_image_tag
@header_image ||= 'whatever-my-default-image-is.png'
image_tag @header_image
end
def header_image(image_path)
@header_image = image_path
end
end
В вашем файле макета ... например, app/views/application.html.erb
. Что-то вроде:
<div id='banner'>
<%= header_image_tag %>
</div>
В ваших отдельных файлах просмотра вы не хотите, чтобы изображение по умолчанию:
<% header_image 'other-image.png' %>
Это должно начать вас. Возможно, вы захотите разрешить header_image_tag
использовать некоторые опции для передачи на image_tag или установить некоторые значения по умолчанию, которые можно переопределить.
Другая вещь, которой вы можете воспользоваться - это блоки content_for
и yield
.
Пример ... в ваших пользовательских представлениях вы можете поместить что-то вроде этого в верхней части вашего представления:
<% content_for :banner do %>
<%= image_tag 'blah.png' %>
<% end %>
А в вашем макете
<div id='banner'>
<%= yield :banner || image_tag 'my-default.png' %>
</div>