модуль AbstractController::Rendering
Константы
- DEFAULT_PROTECTED_INSTANCE_VARIABLES
Публичные методы экземпляров
# File actionpack/lib/abstract_controller/rendering.rb, line 23
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
self.response_body = rendered_body
end Нормализует аргументы, параметры, а затем делегирует #render_to_body и помещает результат в self.response_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, за исключением того, что он не устанавливает 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 64
def view_assigns
protected_vars = _protected_ivars
variables = instance_variables
variables.reject! { |s| protected_vars.include? s }
variables.each_with_object({}) { |name, hash|
hash[name.slice(1, name.length)] = instance_variable_get(name)
}
end Этот метод должен возвращать хеш с присвоенными значениями. Вы можете переопределить эту конфигурацию в каждом контроллере.
Приватные методы экземпляров
# File actionpack/lib/abstract_controller/rendering.rb, line 78
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 93 def _normalize_options(options) # :doc: options end
Нормализует параметры.
# File actionpack/lib/abstract_controller/rendering.rb, line 98 def _process_options(options) # :doc: options end
Обрабатывает дополнительные параметры.
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.