TL; DR
Рельсы 3.1, Рельсы 4, Рельсы 5 и все, что будет дальше
app/views/application
Движок автоматически ищет этот путь, если представление не найдено в пути контроллера.
Рельсы 3 и ранее
app/views/shared
Движок НЕ ищет этот путь автоматически.
Длинная история
Rails 3 (и более ранняя версия) имеют нет значения по умолчанию место для хранения общих представлений.
Неофициальное соглашение предназначено для хранения общих представлений в app / views / shared . Где бы вы ни хранили их, вы должны указать путь
# render app/views/shared/menu.html.erb
<%= render :partial => "shared/menu" %>
Это предложение было популяризировано Agile Web Development с Rails .
Rails 3.1 вводит официальный стандарт для хранения общих представлений:
Приложение / просмотров / приложение
Благодаря этому стандарту движок теперь автоматически ищет шаблоны в 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
.