модуль ActionView::Helpers::RenderingHelper
Action View Рендеринг
Реализует методы, позволяющие рендерить из контекста представления. Для использования этого модуля, всё что вам нужно — это реализовать метод `view_renderer`, который возвращает объект ActionView::Renderer.
Публичные методы экземпляра
# File actionview/lib/action_view/helpers/rendering_helper.rb, line 87
def _layout_for(*args, &block)
name = args.first
if block && !name.is_a?(Symbol)
capture(*args, &block)
else
super
end
end Переопределяет #_layout_for в объекте контекста, чтобы поддерживать случай, когда в частичный передаётся блок. Возвращает содержимое, переданное в макет, заданное по имени или блоку.
Можно представить макет как метод, вызываемый с блоком. Если пользователь вызывает yield :some_name, блок по умолчанию возвращает content_for(:some_name). Если пользователь вызывает просто yield, по умолчанию блок возвращает content_for(:layout).
Пользователь может переопределить это значение по умолчанию, передав блок в макет:
# The template <%= render layout: "my_layout" do %> Content <% end %> # The layout <html> <%= yield %> </html>
В этом случае вместо блока по умолчанию, который возвращал бы content_for(:layout), этот метод возвращает блок, переданный в render :layout, и ответ будет
<html> Content </html>
Наконец, блок может принимать аргументы блока, которые могут быть переданы с помощью yield:
# The template
<%= render layout: "my_layout" do |customer| %>
Hello <%= customer.name %>
<% end %>
# The layout
<html>
<%= yield Struct.new(:name).new("David") %>
</html> В этом случае макет получит блок, переданный в render
:layout, а указанная структура будет передана в блок в качестве аргумента. Результатом будет
<html> Hello David </html>
# File actionview/lib/action_view/helpers/rendering_helper.rb, line 26
def render(options = {}, locals = {}, &block)
case options
when Hash
if block_given?
view_renderer.render_partial(self, options.merge(:partial => options[:layout]), &block)
else
view_renderer.render(self, options)
end
else
view_renderer.render_partial(self, :partial => options, :locals => locals, &block)
end
end Возвращает результат рендеринга, определяемого хэшем параметров. Основные параметры:
-
:partial- См.ActionView::PartialRenderer. -
:file- Рендерит явный файл шаблона (ранее это был старый стандарт), добавьте :locals, чтобы передать те параметры. -
:inline- Рендерит встроенный шаблон, аналогично тому, как это делается в контроллере. -
:text- Рендерит переданный текст. -
:plain- Рендерит переданный текст. Установка типа контента какtext/plain. -
:html- Рендерит переданную строку HTML, в противном случае сначала выполняет экранирование HTML-строки. Установка типа контента какtext/html. -
:body- Рендерит переданный текст и наследует тип контентаtext/plainиз объектаActionDispatch::Response.
Если хэш параметров не передан или указан :update, по умолчанию рендерится частичный шаблон, и второй параметр используется в качестве хэша локальных переменных.
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.