Ответ 1
Этот ответ рассказывает о том, как передаются переменные экземпляра между контроллером и представлением: Как переменные экземпляра Rails передаются в представления?
В принципе, если @current_user задается контроллером, эта переменная экземпляра (вместе со всеми остальными) будет передана из контекста вашего контроллера в контекст представления. Если он не был установлен контроллером, он будет установлен при первом использовании вида.
Для получения дополнительной информации см. другой ответ. Это хорошо прочитано.
Вставить из @mechanicalfish ответ:
def view_assigns
hash = {}
variables = instance_variables
variables -= protected_instance_variables
variables -= DEFAULT_PROTECTED_INSTANCE_VARIABLES
variables.each { |name| hash[name[1..-1]] = instance_variable_get(name) }
hash
end
Передача их в представление (github):
def view_context
view_context_class.new(view_renderer, view_assigns, self)
end
Установка их в виде (github):
def assign(new_assigns) # :nodoc:
@_assigns = new_assigns.each { |key, value| instance_variable_set("@#{key}", value) }
end