Rails: вызов yield в частичном шаблоне? - PullRequest
6 голосов
/ 14 июля 2010

Иногда я вижу это в шаблоне частичного erb:

<%= yield :someval %>

В других случаях доходности вообще нет.

В чем преимущество вызова yield в частичном?

1 Ответ

11 голосов
/ 14 июля 2010

Я использовал его в прошлом, если у меня есть партиал, который можно вызывать с разных страниц, для которого может потребоваться некоторое контекстное содержимое страницы.

Случай использования, который у меня был, был для меню. У меня были свои стандартные пункты меню, но затем у меня было 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

Хотя оба функционируют (если это был настоящий код), я предпочитаю первый метод. Второй может выйти из-под контроля и стать довольно уродливым и довольно быстрым. Хотя это вопрос предпочтений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...