Рендеринг динамического контента в представлении рельсов? - PullRequest
2 голосов
/ 15 января 2012

Какая разница между:

<% content_for :something do %>

и

<% provide :something do %>

Ответы [ 2 ]

2 голосов
/ 15 января 2012

# Обеспечить работает почти так же, как # content_for , за исключением того, что #provide не объединяет блоки.То есть - и следующий код извлечен из документации - скажем, у вас есть эти #content_for s, возможно, в нескольких шаблонах, но определенные в следующем порядке:

<%Qcontent_for :navigation do %Q<
  <li><%= link_to 'Home', :action => 'index' %></li>
<% end %>

<% content_for :navigation do %>
  <li><%= link_to 'Login', :action => 'login' %></li>
<%Qend %>

Теперь, следующее будет отображать обаэлементы навигации в неупорядоченном списке, сначала «Home», затем «Login»:

<ul><%= content_for :navigation %></ul>

#provide не будут объединены и отобразили бы список только с одним элементом.

1 голос
/ 15 января 2012

Provide отправит прямо в макет, тогда как ONCE content_for разрешит отправку дополнительной информации в выход.

Используйте предоставьте, если вы знаете, что отправите только один раз в макет, используйте content_for, если вы хотите или можете динамически отправлять дополнительную информацию.

Это на самом деле немного сложнее, чем выше, но выше укороченная версия.

Dave

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