модуль ActionView::Helpers::RenderingHelper
Action View Отображение
Реализует методы, позволяющие осуществлять отображение из контекста представления. Для использования этого модуля необходимо реализовать метод view_renderer, который возвращает объект ActionView::Renderer.
Общедоступные методы экземпляра
Переопределяет #_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 87
def _layout_for(*args, &block)
name = args.first
if block && !name.is_a?(Symbol)
capture(*args, &block)
else
super
end
end Возвращает результат отображения, диктуемый хэш-таблицей опций. Основные опции:
-
:partial- см.ActionView::PartialRenderer. -
:file- Отображает явный файл шаблона (раньше это был старый по умолчанию), добавьте :locals для передачи этих параметров. -
:inline- Отображает встроенный шаблон, аналогично тому, как это делается в контроллере. -
:text- Отображает переданный текст. -
:plain- Отображает переданный текст. Установка типа контента
как text/plain.
-
:html- Отображает переданную безопасную строку HTML, в противном случае
сначала выполняет экранирование HTML для строки. Установка типа контента как text/html.
-
:body- Отображает переданный текст и наследует тип
содержимого text/html от объекта ActionDispatch::Response.
Если не передана хэш-таблица опций или указано :update, по умолчанию отображается частичный шаблон, и второй параметр используется как хэш-таблица локальных переменных.
# 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)
end
end
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.