модуль ActionView::Helpers::RenderingHelper
Action View Rendering
Реализует методы, которые позволяют выполнять отрисовку из контекста представления. Для использования этого модуля вам нужно реализовать метод `view_renderer`, который возвращает объект ActionView::Renderer.
Публичные методы экземпляров
# File actionview/lib/action_view/helpers/rendering_helper.rb, line 98
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 31
def render(options = {}, locals = {}, &block)
case options
when Hash
in_rendering_context(options) do |renderer|
if block_given?
view_renderer.render_partial(self, options.merge(partial: options[:layout]), &block)
else
view_renderer.render(self, options)
end
end
else
if options.respond_to?(:render_in)
options.render_in(self, &block)
else
view_renderer.render_partial(self, partial: options, locals: locals, &block)
end
end
end Возвращает результат рендеринга, определяемого хэш-таблицей параметров. Основные параметры:
-
:partial- См.ActionView::PartialRenderer. -
:file- Отображает явный файл шаблона (ранее это был старый стандарт), добавьте :locals, чтобы передать эти значения. -
:inline- Отображает встроенный шаблон аналогично тому, как это делается в контроллере. -
:plain- Отображает переданный текст. Устанавливает тип контента какtext/plain. -
:html- Отображает переданную строку HTML, безопасную для HTML, в противном случае сначала выполняет HTML-экранирование строки. Устанавливает тип контента какtext/html. -
:body- Отображает переданный текст и наследует тип контентаtext/plainот объектаActionDispatch::Response.
Если параметр options не передан или если указано :update, то:
Если передан объект, отвечающий за `render_in`, вызывается `render_in` на объекте с передачей текущего контекста представления.
В противном случае рендерится частичный шаблон с использованием второго параметра в качестве хэша локалей.
© 2004–2020 David Heinemeier Hansson
Licensed under the MIT License.