Рендеринг контента внутри частичного via = yield - PullRequest
6 голосов
/ 25 августа 2011

Я создаю приложение с ruby ​​на рельсах, где у меня есть items / _item.html.erb.Внутри партиала есть выражение выхода, поэтому я могу добавлять дополнительный контент по мере необходимости.В этом случае я хочу добавить определенную кнопку к элементу в зависимости от того, что представление вызывает частично.

Это то, что я пробовал, и он рендерит частичное, но он не рендерит блок:

_item.html.erb

<%= yield if block_given? %>
<div>
  <%= item.name %>
</div>

someview.html.erb

...

<% render(:partial => 'items/item', :collection => current_user.items do %>
  <%= "HELLO" %>      
<% end %>

...

Я также безуспешно пытался использовать content_for и некоторые другие вещи.Есть ли способ, чтобы можно было визуализировать определенный контент внутри частичного с помощью yield?В настоящее время я использую Rails3

EDIT:

Я обнаружил, что это хэш: collection, который делает невозможным вставку блока.

Обе части кода работают:

<%= render :layout => 'items/item' do %>
      Hello world      
<% end %>

<%= render :layout => 'items/item', :locals => {:item => current_user.items.first} do %>
  Hello world      
<% end %>

Это означает, что если я сделаю .each, я смогу выполнить то, что хочу, но это был бы уродливый код.Кто-нибудь знает способ обойти это?

1 Ответ

4 голосов
/ 25 августа 2011

content_for должно работать нормально в этом случае.Вот код, который я только что дважды проверил локально.

where.html.erb

<% content_for :foobar do %>
  fubar
<% end %>

_item.html.erb

<% if content_for? :foobar %>
  <%= yield :foobar %>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...