модуль 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)
end
end Возвращает результат рендеринга, задаваемый хэш-таблицей опций. Основные опции:
-
:partial- См.ActionView::PartialRenderer. -
:file- Рендерит явную файловую шаблон (это был старый стандартный вариант), добавьте :locals для передачи локалей. -
:inline- Рендерит инлайн-шаблон, аналогично тому, как это делается в контроллере. -
:text- Рендерит переданный текст. -
:plain- Рендерит переданный текст. Устанавливает тип контента какtext/plain. -
:html- Рендерит переданную строку HTML-безопасной, в противном случае сначала выполняет экранирование HTML строки. Устанавливает тип контента какtext/html. -
:body- Рендерит переданный текст и наследует тип контентаtext/htmlот объектаActionDispatch::Response.
Если хэш-таблица опций не передаётся или указан :update, по умолчанию рендерится частичный и второй параметр используется в качестве хэша локалей.
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.