module AbstractController::Rendering
Константы
- DEFAULT_PROTECTED_INSTANCE_VARIABLES
Открытые методы экземпляра
# File actionpack/lib/abstract_controller/rendering.rb, line 26
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 50
def render_to_body(options = {})
end Выполняет непосредственный рендеринг шаблона.
# File actionpack/lib/abstract_controller/rendering.rb, line 44 def render_to_string(*args, &block) options = _normalize_render(*args, &block) render_to_body(options) end
Подобно render, но возвращает отрендеренный шаблон в виде строки, не устанавливая self.response_body.
Если компонент расширяет семантику response_body (как ActionController расширяет её, позволяя использовать любой объект, отвечающий на метод each), этот метод необходимо переопределить, чтобы он по-прежнему возвращал строку.
# File actionpack/lib/abstract_controller/rendering.rb, line 54 def rendered_format Mime[:text] end
Возвращает Content-Type отрендеренного содержимого.
# File actionpack/lib/abstract_controller/rendering.rb, line 62
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.