在部分via = yield内渲染内容

rol*_*usa 6 ruby-on-rails partials ruby-on-rails-3

我正在使用ruby在rails上创建一个应用程序,其中有一个项目/ _item.html.erb.partial内部是一个yield语句,所以我可以根据需要添加额外的内容.在这种情况下,我想根据视图调用部分向项目添加特定按钮.

这是我试过的,它渲染部分,但它不渲染块:

_item.html.erb

<%= yield if block_given? %>
<div>
  <%= item.name %>
</div>
Run Code Online (Sandbox Code Playgroud)

someview.html.erb

...

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

...
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用content_for和其他一些东西但没有成功.有没有办法能够在部分通过收益率内呈现特定内容?我目前正在使用Rails3

编辑:

我发现它是:集合哈希使得无法插入块.

这两段代码都有效:

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

<%= render :layout => 'items/item', :locals => {:item => current_user.items.first} do %>
  Hello world      
<% end %>
Run Code Online (Sandbox Code Playgroud)

这意味着如果我做了一个.我可以完成我想要的东西,但这将是丑陋的代码.有人知道解决这个问题吗?

twe*_*ked 5

content_for在这种情况下应该可以正常工作。这是我刚刚在本地仔细检查的代码。

某处.html.erb

<% content_for :foobar do %>
  fubar
<% end %>
Run Code Online (Sandbox Code Playgroud)

_item.html.erb

<% if content_for? :foobar %>
  <%= yield :foobar %>
<% end %>
Run Code Online (Sandbox Code Playgroud)