модуль AbstractController::Rendering
Константы
- DEFAULT_PROTECTED_INSTANCE_VARIABLES
Публичные методы экземпляров
# File actionpack/lib/abstract_controller/rendering.rb, line 27
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 51
def render_to_body(options = {})
end Выполняет фактическое рендеринг шаблона.
# File actionpack/lib/abstract_controller/rendering.rb, line 45 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 55 def rendered_format Mime[:text] end
Возвращает Content-Type отрендеренного содержимого.
# File actionpack/lib/abstract_controller/rendering.rb, line 63
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 74
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 89 def _normalize_options(options) # :doc: options end
Нормализует опции.
# File actionpack/lib/abstract_controller/rendering.rb, line 94 def _process_options(options) # :doc: options end
Обрабатывает дополнительные опции.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.