Я использовал его в прошлом, если у меня есть партиал, который можно вызывать с разных страниц, для которого может потребоваться некоторое контекстное содержимое страницы.
Случай использования, который у меня был, был для меню. У меня были свои стандартные пункты меню, но затем у меня было yield(:menu)
, так что, чтобы пользователь загружал страницу администрирования, я мог добавить пункты меню со страницы вместо того, чтобы писать оператор условия в самой части.
Это какой-то псевдокод:
_menu.haml
%ul
%li Home
%li Users
%li Roles
= yield(:menu)
users.haml
- content_for :menu do
%li Add User
%li Change permissions
roles.haml
- content_for :menu do
%li Add Role
В отличие от:
%ul
%li Home
%li Users
%li Roles
- if current_controller == 'users'
%li Add User
%li Change permissions
- if current_controller == 'roles'
%li Add Role
Хотя оба функционируют (если это был настоящий код), я предпочитаю первый метод. Второй может выйти из-под контроля и стать довольно уродливым и довольно быстрым. Хотя это вопрос предпочтений.