我正在使用ruby在rails上创建一个应用程序,其中有一个项目/ _item.html.erb。 partial内部是一个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和其他一些东西但没有成功。有没有办法能够在部分通过收益率内呈现特定内容?我目前正在使用Rails3
编辑:
我发现它是:集合哈希使得无法插入块。
这两段代码都有效:
<%= render :layout => 'items/item' do %>
Hello world
<% end %>
<%= render :layout => 'items/item', :locals => {:item => current_user.items.first} do %>
Hello world
<% end %>
这意味着,如果我做了一个。每次我可以完成我想要的东西,但这将是丑陋的代码。有人知道解决这个问题吗?
答案 0 :(得分:4)
content_for
应该可以正常工作。这是我在本地双重检查的代码。
<强> somewhere.html.erb 强>
<% content_for :foobar do %>
fubar
<% end %>
<强> _item.html.erb 强>
<% if content_for? :foobar %>
<%= yield :foobar %>
<% end %>