Короче говоря: да, они одинаковы.
Однако иногда передача строки приводит к вызову render :file
или render :template
.
Вот документы API для функции рендеринга
Если прокрутить вниз и нажать «Показать исходный код», мы увидим, что он делает изнутри.
Обратите внимание на блок, начинающийся со строки 872:
872: elsif options.is_a?(String) || options.is_a?(Symbol)
873: case options.to_s.index('/')
874: when 0
875: extra_options[:file] = options
876: when nil
877: extra_options[:action] = options
878: else
879: extra_options[:template] = options
880: end
Глядя на этот код, мы можем определить, что он пытается быть умным.
- Если строка начинается с
/
, (случай when 0
), то она будет вызывать render :file
- Если строка вообще не содержит
/
(случай when nil
), то она вызовет render :action
- Если строка содержит
/
где-то в середине или конце строки (тогда else
case), то она вызовет render :template
Надеюсь, это удовлетворительно ответит на ваш вопрос: -)