Обычно это будет отображаться в файле макета (по умолчанию - views / layouts / application.html.haml).Он просто указывает Rails визуализировать содержимое текущего действия в этом местоположении.
Так что если у вас есть views / layouts / application.html.haml с:
%body
=yield
И у вас есть views / posts / index.html.haml с:
%h1 This is the posts index page! :D
Затем, когда вы перейдете к действию, которое отображает страницу индекса постов (вероятно, / posts), вы увидите HTML, которыйзаголовок отображается в местоположении yield
в файле макета:
<body>
<h1>This is the posts index page! :D</h1>
</body>
Это особенно полезно для включения таких вещей, как обычная разметка навигации по страницам или заголовки, которые должны отображаться на всех страницах безпереопределить точный HTML в каждом представлении.
Если у вас другой макет для отдельного раздела вашего сайта, вы можете отобразить его в контроллере следующим образом:
def index
if signed_in?
render :layout => 'application'
else
render 'user/unauthorized', :layout => 'external' and return
end
end
Который будет использовать указанный вид, отображаемый внутри указанного макета везде, где встречается макет yield
.В остальной части оператора user/unauthorized.html.haml
будет отображаться в макете layouts/external.html.haml
, а в Sign_in?на тот случай, если вы получите представление posts/index.html.haml
в макете layouts/application.html.haml
.