модуль AbstractController::Rendering
Константы
- DEFAULT_PROTECTED_INSTANCE_VARIABLES
Публичные методы экземпляра
# File actionpack/lib/abstract_controller/rendering.rb, line 25
def render(*args, &block)
options = _normalize_render(*args, &block)
rendered_body = render_to_body(options)
if options[:html]
_set_html_content_type
else
_set_rendered_content_type rendered_format
end
_set_vary_header
self.response_body = rendered_body
end Нормализует аргументы и опции, а затем делегирует вызов методу render_to_body и помещает результат в self.response_body.
Поддерживаемые опции зависят от реализации render_to_body.
# File actionpack/lib/abstract_controller/rendering.rb, line 49
def render_to_body(options = {})
end Выполняет фактическое рендеринг шаблона.
# File actionpack/lib/abstract_controller/rendering.rb, line 43 def render_to_string(*args, &block) options = _normalize_render(*args, &block) render_to_body(options) end
Аналогично методу render, но возвращает только отрендеренный шаблон в виде строки, а не устанавливает self.response_body.
Если компонент расширяет семантику response_body (как ActionController расширяет её для любого объекта, отвечающего на вызов метода), этот метод нужно переопределить, чтобы по-прежнему получить строку.
# File actionpack/lib/abstract_controller/rendering.rb, line 53 def rendered_format Mime[:text] end
Возвращает Content-Type отрендеренного содержимого.
# File actionpack/lib/abstract_controller/rendering.rb, line 61
def view_assigns
variables = instance_variables - _protected_ivars
variables.each_with_object({}) do |name, hash|
hash[name.slice(1, name.length)] = instance_variable_get(name)
end
end Этот метод должен возвращать хэш с присвоенными значениями. Вы можете переопределить эту настройку для каждого контроллера.
Приватные методы экземпляра
# File actionpack/lib/abstract_controller/rendering.rb, line 73
def _normalize_args(action = nil, options = {}) # :doc:
if action.respond_to?(:permitted?)
if action.permitted?
action
else
raise ArgumentError, "render parameters are not permitted"
end
elsif action.is_a?(Hash)
action
else
options
end
end Нормализует аргументы, преобразуя render "foo" в render action: "foo" и render "foo/bar" в render file: "foo/bar".
# File actionpack/lib/abstract_controller/rendering.rb, line 88 def _normalize_options(options) # :doc: options end
Нормализует опции.
# File actionpack/lib/abstract_controller/rendering.rb, line 93 def _process_options(options) # :doc: options end
Обрабатывает дополнительные опции.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.