Spec-Zone.ru › Ruby on Rails 4.1

модуль ActionView::Helpers::RenderingHelper

Action View Отображение

Реализует методы, позволяющие осуществлять отображение из контекста представления. Для использования этого модуля необходимо реализовать метод view_renderer, который возвращает объект ActionView::Renderer.

Общедоступные методы экземпляра

_layout_for(*args, &block) Показать исходный код

Переопределяет #_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
render(options = {}, locals = {}, &block) Показать исходный код

Возвращает результат отображения, диктуемый хэш-таблицей опций. Основные опции:

  • :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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API