render
в контроллере и render
в представлении - это разные методы. Контроллер в конечном итоге вызывает render
для представления, но сам метод render
контроллера будет вызываться только один раз. Это выглядит так:
# Check for double render errors and set the content_type after rendering.
def render(*args) #:nodoc:
raise ::AbstractController::DoubleRenderError if response_body
super
self.content_type ||= Mime[formats.first].to_s
response_body
end
Заметьте, как он поднимается, если вызывается более одного раза?
Когда вы вызываете helper_method
, вы предоставляете представлению прокси для версии контроллера render
, которая не предназначена для использования так же, как ActionView
, что , в отличие от контроллера, ожидается, что он будет вызываться повторно для рендеринга партиалов и тому подобного.