Отображение содержимого внутри частичного перехода via = yield

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

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

_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 %>

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

6
задан roloenusa 25 August 2011 в 00:56
поделиться