Направляющие: вызов урожая в частичном шаблоне?

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

<%= yield :someval %>

Другие времена там не являются никаким урожаем вообще.

Каково преимущество вызова урожая в частичном?

6
задан randombits 13 July 2010 в 21:15
поделиться

1 ответ

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

В качестве примера я использовал меню. У меня были мои стандартные пункты меню, но затем у меня был yield(:menu), так что когда пользователь загружал административную страницу, я мог добавлять пункты меню со страницы вместо того, чтобы писать оператор условия в самом partial.

Вот псевдокод:

_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

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

11
ответ дан 9 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: