TL;DR
Rails 3.1, Rails 4, Rails 5 и все, что будет дальше
app/views/application
Движок ищет этот путь автоматически, если представление не найдено в пути к контроллеру.
Rails 3 и более ранние версии
app/views/shared
Движок НЕ ищет этот путь автоматически.
Длинная история
Rails 3 (и предыдущая версия) нет места по умолчанию для хранения общих представлений.
Согласно неофициальному соглашению, общие представления хранятся в папке app/views/shared. Однако, где бы вы ни хранили их, вы должны указать путь
# render app/views/shared/menu.html.erb
<%= render :partial => "shared/menu" %>
Это предложение было популяризировано Agile Web Development with Rails.
Rails 3.1 представляет официальный стандарт для хранения общих представлений:
app/views/application
Благодаря этому стандарту движок теперь автоматически ищет шаблоны в app/views/application. В результате вам больше не нужно использовать полный путь.
Любопытные могут проследить здесь ход мысли, стоящий за этим решением.
Старый синтаксис
# render app/views/application/menu.html.erb
# unless menu.html.erb is found in appp/views/my_controller
<%= render :partial => "menu" %>
Новый синтаксис
# render app/views/application/menu.html.erb
# unless menu.html.erb is found in appp/views/my_controller
<%= render partial: "menu" %>
Конечно, вы по-прежнему можете размещать свои общие представления где угодно и ссылаться на них по пути.
<%= render :partial => "my_own_special_shared_folder/menu" %>
Однако, если у вас нет веской причины для этого, придерживайтесь нового стандарта и сохраняйте общие представления в app/views/application
.
person
Mihai Dinculescu
schedule
07.02.2016